configurationIIS Express以便对VS2010项目进行外部访问
我正在VS2010中开发一个项目,并能够通过IIS Express在本地查看我的站点。 我想通过networking启用外部访问。
我所有的研究都把这个博客文章发给了我: http : //blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx ,似乎并没有显示如何configuration在Visual Studio中启动的项目的绑定(我无法find截图中的屏幕,我编辑了applicationhost.config中的绑定信息,但似乎没有反映,当我运行网站视觉工作室)。
1编辑applicationhost.config文件(位于文档的IISExpress文件夹中)后,您的站点绑定应如下所示:
<bindings> <binding protocol="http" bindingInformation="*:8080:*" /> </bindings>
绑定由三部分组成。 首先是IP地址或列表,或者在这种情况下是通配符。 其次是端口号,其次是主机名,列表或通配符(用于通过Host
头进行过滤)。 为了开发的目的,通配符在这里是最合适的,因为你可能会使用一个独特的端口。
2因为您正在使用非本地主机绑定,所以需要额外的权限。 您可以以pipe理员身份运行VS,或者最好添加URL ACL以授予所需的权限。 在下面的例子中,授予每个人的权限,但是你可以使用你自己的用户名。
注意: urlacl
必须完全匹配绑定。 因此,对于http://*:8080
urlacl
将允许绑定*:8080:*
,但不允许绑定*:8080:localhost
即使后者是前者的子集。 这意味着如果不使用通配符,而是在applicationhost.config
列出主机头文件,则必须为每个文件添加匹配的urlacl
。
为外部stream量configurationHTTP.sys的步骤与设置站点以使用保留端口类似。 在Windows 7或Windows Vista上,从提升的命令提示符处运行以下命令:
netsh http add urlacl url=http://*:8080/ user=DOMAIN\username
在Windows XP上,从提升的命令提示符处运行以下命令:
httpcfg set urlacl /u http://*:8080/ /a D:(A;;GX;;;WD)
注2如果以pipe理员身份运行VS或添加ACL条目不能解决问题,请从命令行运行IIS Express,并检查是否存在任何绑定注册失败消息。 要从命令行启动,请input以下命令:
iisexpress.exe /site:"your-site-name"
3最后你将需要适当的防火墙条目。 为此,使用“具有高级安全性的Windows防火墙”控制台最为简单。
在“入站规则”下select“新规则…”。
- 规则types是“自定义”。
- 程序是服务 – >自定义…->仅适用于服务。 (虽然IIS Express不是一项服务,但它使用的是HTTP多路复用器)。
- 协议是TCP
- 特定端口:列出所有IIS Express绑定的所有端口。 您可以随时回到此规则并添加端口。 (如果这变得很麻烦,你可以添加一个范围,如
40000-65534
,覆盖了Visual Studio使用的整个范围,但是要注意这个不太安全)。 - 操作是“允许连接”
- configuration文件将是下列之一。 如果有疑问,请select“域名+私人”。
- “域”,如果你的是一个企业桌面,只会在本地域上运行
- “域名+私人”如果您的公司是非公司环境中的私人开发机器,或者在家工作时也需要工作的公司笔记本电脑。
- 如果您需要在非专用networking上进行演示,请点击“域名,私人和公共”。
- 名称应该像“IIS Express Dev Server”
我花了几个小时在这个问题上,试图从我的Android Xoom浏览到我的win7开发机器,所以我可以testing一个新创build的ASP.NET Web应用程序。 我所做的只是将IISExpress的applicationhost.config从使用PC主机名到PC的当前IP地址更改为我的新网站。
<binding protocol="http" bindingInformation="*:80:dev-Lee" />
至
<binding protocol="http" bindingInformation="*:80:192.168.1.102" />
一旦我这样做,并重新启动IISExpress …我能够浏览到我的开发人员李机和从我的Xoom看到我的应用程序!
我们可以通过编辑IIS Express的applicationhost.config来添加多个绑定地址
<bindings> <binding protocol="http" bindingInformation="*:62217:localhost" /> <binding protocol="http" bindingInformation="*:62217:192.168.0.5" /> <binding protocol="http" bindingInformation="*:62218:192.168.0.5" /> </bindings>
现在我们可以使用IP地址从局域网访问网站。
使用IIS Express从Lan访问本地站点
Visual Studio 2013 SP1及更高版本(2015)包括“将服务器设置应用于所有用户(存储在项目文件中)”设置。 这是默认启用的。 启用时,Visual Studio使用命令行参数启动IIS Express,使其使用不同的configuration文件。 “applicationhost.config”文件的位置在“.vs \ config”中的项目目录下。
我们制作了一个免费的VS(2012,2013,2015)扩展名为Conveyor,可以通过VS中的Tools-> Extensions …菜单或者在图库站点https://visualstudiogallery.msdn.microsoft上find它。; COM / a429dbb7-a982-4541-b401-934375c02c0f?SRC =首页
从Visual Studio 2012开始,我有很多麻烦,我从404错误到503错误。 最后是什么对我来说,是消灭IIS Expressconfiguration中的所有相关configuration…
"\Program Files (x86)\IIS Express\appcmd.exe" list site "\Program Files (x86)\IIS Express\appcmd.exe" delete site xxx "\Program Files (x86)\IIS Express\appcmd.exe" delete site yyy
然后我从VS的web项目的属性页创build了一个新的虚拟目录,但在创build虚拟目录之前,我将主机名更改为http:// myhost:80 /然后点击创build虚拟目录button。 以前我得到错误说主机名必须是'本地主机',但这次没有。 之后,它的工作。
总之,先清除现有的configuration再重新启动。
如果您正在使用Visual Studio,请按照以下步骤访问IP-Adress上的IIS-Express:
- 在Windows命令行中获取主机IP地址:
ipconfig
- 转到$(SolutionDir).vs \ config \ applicationHost.config
- 找
<site name="WebApplication3" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" /> </application> <bindings> <binding protocol="http" bindingInformation="*:62549:localhost" /> </bindings> </site>
- 添加:
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
与您的IP地址 - 用pipe理员权限运行你的Visual Studio,一切都应该工作
- 如果您尝试从远程连接,也许会查找一些防火墙问题
线索是,Visual Studio得到它自己的applicationHost.config文件!
如果你的外部域是“name.mydyndns.com”,那么你需要写:
<binding protocol="http" bindingInformation="*:name.mydyndns.com" />
这适用于Windows 2003 Server和IIS 7.5 Express。
在IIS上的应用程序池中将“启用32位应用程序”设置为“true”。