我有一个网站(MVC3),用于开发,该网站托管在IIS Express中。(我遇到了Cassini Devserver的错误,必须升级...)现在,我想知道,是否可以让本地网络(位于路由器后面)上的其他计算机看到该计算机上托管的站点?(例如,如果我将http://my.local.ip:port写入与我位于同一局域网中的浏览器中,页面是否会加载?)
我有一个网站(MVC3),用于开发,该网站托管在IIS Express中。(我遇到了Cassini Devserver的错误,必须升级...)现在,我想知道,是否可以让本地网络(位于路由器后面)上的其他计算机看到该计算机上托管的站点?(例如,如果我将http://my.local.ip:port写入与我位于同一局域网中的浏览器中,页面是否会加载?)
Answers:
默认情况下,IIS Express仅处理本地主机请求。要处理外部请求,请编辑applicationhost.config
文件(位于中%userprofile%\documents\iisexpress\config\
),然后更改localhost
为'*'
或您的计算机名称。(记住非本地主机绑定,您必须以管理员身份运行或将URL acl设置为管理员,然后以非管理员身份运行iisexpress)
<binding protocol="http" bindingInformation="*:44886:localhost" />
为<binding protocol="http" bindingInformation="*:44886:*" />
。然后在管理员模式(netsh http add urlacl url=http://+:44886/ user=\Everyone
)中添加url acl 。现在,当我在Visual Studio中按F5时,出现“无法启动IIS Express”。
另外,您可以使用AnalogX的PortMapper之类的东西充当小型回送代理,以将本地主机绑定的端口隧道化为公共开放的端口。
例如,
实际上,端口9090(由PortMapper打开)上的任何连接都将通过隧道传送到localhost:8080;从而绕过所有的netsh废话,有时可能会很痛苦。
下面是我的配置:
使用此代理方法的好处是,它不会在本地dev框中永久公开一个开放的IISExpress端口。
很少有时候我想公开开放港口开会。但大多数情况下,该端口应关闭,并且只能由localhost访问。每次都在路由器上修改防火墙规则是很痛苦的。这是我的设置方法:
确保关闭所有PortMapper窗口,以使所有更改生效。
如其他人所述,您可能需要在以下位置为应用程序调整IISExpress绑定:
My Documents\IISExpress\applicationhost.config
project\.vs\config\applicationhost.config
像这样:
<bindings>
<!-- bindingInformaiton format:
IPToBindTo:Port:DNSHostName -->
<!--OLD:
<binding protocol="http" bindingInformation="*:8080:localhost"/>-->
<!--Change '*' to 127.0.0.1 and remove 'localhost' right of the port number
to avoid invalid DNS hostname errors -->
<binding protocol="http" bindingInformation="127.0.0.1:8080:" />
</bindings>
HTTP Error 400. The request hostname is invalid.
我相信,要成功实现此目标,可通过三个步骤:
1)添加一个dns条目或主机条目,以便其他计算机可以查找开发计算机的ip地址
2)像这样在%userprofile / documents / IISExpress / Config中向applicationhost.config添加一个绑定
<site name="MobileDashboard(2)" id="7">
<bindings>
...
<binding protocol="http" bindingInformation="*:yourport#:yourmachinendnsname" />
</bindings>
</site>
3)运行此处找到的命令以允许传入请求:
netsh http add urlacl url=http://yourmachinendnsname:yourport#/ user=everyone
这个线程的答案很好,它只保留了防火墙例外。
netsh advfirewall firewall add rule name="IIS Express (non-SSL)" action=allow protocol=TCP dir=in localport=8000
netsh advfirewall firewall add rule name="IIS Express (SSL)" action=allow protocol=TCP dir=in localport=44300
来自评论@ http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx
来自http://blogs.microsoft.co.il/blogs/shair/archive/2008/12/15/how-to-use-fiddler-on-localhost.aspx的Fiddler中的“自定义规则”技巧最终为我工作。
是的,您可以使用iis Express配置尽可能多的站点以供本地局域网使用,这里的链接是从Lan IIS Express访问本地站点的链接,其中解释了如何实现此目的。
applicationhost.config
看上去像<binding protocol="http" bindingInformation="*:23297:localhost" /> <binding protocol="http" bindingInformation="*:23297:192.168.1.254" />