使用 IISExpress 托管网站(暂时)

我有一个网站(MVC3) ,为开发是托管在 IIS 快车。(我遇到了 Cassini Devserver 的 bug,不得不升级... ...) 现在,我想知道,是否有可能让我本地网络上的其他机器(在路由器后面)看到我机器上托管的站点?(例如:。如果我把 http://my.local.ip:port写到和我在同一个局域网上的浏览器中,页面会加载吗?)

69463 次浏览

默认情况下,IISExpress 仅服务于本地主机请求。要处理外部请求,请编辑 applicationhost.config文件(位于 %userprofile%\documents\iisexpress\config\中)并将 localhost更改为 '*'或您的机器名称。(记住,对于非本地主机绑定,必须以管理员身份运行,或者将 URL acl 设置为管理员身份,然后以非管理员身份运行 iisExpress)

我认为,实现这一目标有三个步骤:

1)添加一个 dns 条目或主机条目,这样其他机器就可以查找开发机器的 ip 地址

2)像这样在% userprofile/document/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

或者,您可以使用类似 AnalogX 的 PortMapper的东西作为一个小的环回代理,以 隧道私有的本地主机绑定端口来公开打开端口。

比如说,

  • IISExpress 在本地绑定到 < strong > localhost: 8080
  • PortMapper 端口 9090配置为将流量中继到 < strong > localhost: 8080

有效地,端口 9090上的任何连接(由 PortMapper打开)将被隧道连接到 Localhost: 8080; 从而绕过所有 netsh 无意义的东西,这有时可能是一种痛苦。

下面是我的配置:

PortMapper configuration

使用这种代理方法的好处是,它不会在本地开发框中永久公开一个打开的 IISExpress端口。

很少有时候,我希望公开地打开端口以举行会议; 但是大多数时候,端口应该关闭,并且只能由 localhost 访问。每次修改路由器上的防火墙规则都是一件痛苦的事情。我是这样安排的:

  • 我的路由器防火墙将 9090端口转发到 PortMapper
  • PortMapper 仅在 PortMapper运行时才继续代理流量到 IISExpress(侦听 8080)。

注意

确保关闭所有 PortMapper窗口,以便任何更改生效。

注2

中调整应用程序的 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>

这个线程的答案很棒,只是忽略了防火墙异常。

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

来源: comments@http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx

是的,你可以配置尽可能多的网站使用 iis 表示本地局域网使用这里是链接 从 LanIISExpress 访问本地站点,它解释了如何实现这一点。