使用IIS Express托管网站(暂时)

时间:2011-03-08 17:11:06

标签: .net iis iis-express

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

6 个答案:

答案 0 :(得分:118)

默认情况下,IIS Express仅提供localhost请求。要提供外部请求,请修改applicationhost.config文件(位于%userprofile%\documents\iisexpress\config\)并将localhost更改为'*'或您的计算机名称。 (请记住,对于非localhost绑定,您必须以管理员身份运行或以管理员身份设置URL acl,然后以非管理员身份运行iisexpress)

答案 1 :(得分:12)

或者,您可以使用类似AnalogX's PortMapper的内容作为 tunnel 私有本地主机绑定端口的小型环回代理,以公开打开端口。

例如,

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

有效地,端口 9090 上的任何连接(由 PortMapper 打开)将通过隧道传输到 localhost:8080 ;从而绕过了所有可能是痛苦的网络废话。

以下是我的配置:

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>

答案 2 :(得分:6)

我相信有三个步骤可以取得成功:

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)运行找到的here命令以允许传入的请求:

netsh http add urlacl url=http://yourmachinendnsname:yourport#/ user=everyone

答案 3 :(得分:4)

这个帖子的答案很棒,它只是遗漏了防火墙例外。

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

答案 4 :(得分:2)

来自http://blogs.microsoft.co.il/blogs/shair/archive/2008/12/15/how-to-use-fiddler-on-localhost.aspx的Fiddler中的自定义规则技巧最终为我工作。

答案 5 :(得分:0)

是的,您可以使用iis express为本地局域网配置尽可能多的站点,这里是链接Accessing local sites from Lan IIS Express,它解释了如何实现这一点。