配置IIS Express以外部访问VS2010项目

snu*_*mpy 102 visual-studio-2010 visual-studio iis-express

我正在VS2010中开发一个项目,并且能够通过IIS Express在本地查看我的站点.我想通过网络启用外部访问.

我的所有研究都已将我发送到此博客条目:http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx,这是有帮助的但是确实如此似乎没有显示如何为在visual studio中启动的项目配置绑定(我在截图中找不到屏幕,我在applicationhost.config中编辑了绑定信息,但是当我从中运行网站时似乎没有反映出来视觉工作室).

vik*_*all 135

1编辑applicationhost.config文件(位于文档中的IISExpress文件夹中)后,您的站点绑定应如下所示:

<bindings>
  <binding protocol="http" bindingInformation="*:8080:*" />
</bindings>
Run Code Online (Sandbox Code Playgroud)

绑定包括三个部分.首先是IP地址或列表,或者在本例中是通配符.其次是端口号,第三是主机名,列表或通配符(按Host标题过滤).出于开发目的,通配符最适合此处,因为您可能会使用唯一的端口.

2因为您使用的是非localhost绑定,所以需要其他权限.您可以以管理员身份运行VS,或者最好添加URL ACL以授予所需权限.在下面的示例中,每个人都有权限,但您可以使用自己的用户名.

注:urlacl必须完全匹配的结合.因此,即使后者是前者的一个子集,urlaclfor http://*:8080也会允许绑定*:8080:*,但不能绑定*:8080:localhost.这意味着,如果您不使用通配符列出主机标头applicationhost.config,则必须urlacl为每个标头添加匹配项.

为外部流量配置HTTP.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如果以管理员身份运行VS或添加ACL条目无法解决问题,请从命令行运行IIS Express并检查是否存在任何绑定注册失败消息.要从命令行开始,请提供以下命令:

iisexpress.exe /site:"your-site-name"
Run Code Online (Sandbox Code Playgroud)

3最后,您需要适当的防火墙条目.为此,最简单的方法是使用"具有高级安全性的Windows防火墙"控制台.

在"入站规则"下,选择"新规则...".

  • 规则类型是"自定义".
  • 程序是服务 - >自定义...->仅适用于服务.(虽然IIS Express不是服务,但它使用的HTTP多路复用器是).
  • 协议是TCP
  • 特定端口:列出所有IIS Express绑定的所有端口.您可以随时返回此规则并添加端口.(如果这变得很烦人,您可以添加一个范围,例如40000-65534涵盖Visual Studio使用的整个范围,但请注意这不太安全).
  • 行动是"允许连接"
  • 个人资料将是以下之一.如有疑问,请选择"域名+私人".
    • "域",如果您的是公司桌面,并且只会在本地域上运行
    • "Domain + Private"如果您的公司是非公司环境中的私人开发机器,或者是在家中工作时也需要工作的公司笔记本电脑.
    • "域名,私人和公共",如果您需要在非私人网络上进行演示.
  • 名称应该类似"IIS Express Dev Server"

  • 好的,因为Visual Studio分配了一个端口(8080除外),Windows防火墙阻止了它.关闭Windows防火墙(我可能只是打开端口,但我在一个安全的网络上)并使用我的机器的IP而不是机器名称,它工作.谢谢.我投了票,但还没有代表=( (15认同)
  • @ user578913所以我终于找到了正确的applicationhost.config文件,打开正在运行的IIS Express任务栏并点击它然后在配置文件的链接上.我在第二行将端口设置为1063,因为这是第一行设置的.跑你的命令行,一切都很好.当我从网络上的另一台机器转到http:// machine-name或http:// machine-name:1063时,我仍然一无所获. (12认同)
  • 是的,如果需要启用Windows防火墙,则显式添加TCP端口8080(或您使用的内容).在Windows 7中,我最初尝试将端口分配给"IIS Express Worker Process".但它没有用.我不得不使用"新规则"选项并允许端口8080.选择配置文件(域,私有,公共)也很重要. (3认同)
  • 从VS2015开始,文件位置为`C:\ <Path\To\Solution> \.vs\config\applicationhost.config`.(谢谢,@ Talon) (3认同)
  • 自我注意:如果您拒绝访问,**以管理员身份运行Visual Studio**. (2认同)

小智 29

我也在这个问题上花了好几个小时,尝试从我的Android Xoom浏览我的win7开发机器,所以我可以测试一个我创建的新的asp.net网络应用程序.我所做的只是将IISExpress的applicationhost.config从使用PC HostName更改为PC的当前IP地址,用于我的新站点.

<binding protocol="http" bindingInformation="*:80:dev-Lee" />
Run Code Online (Sandbox Code Playgroud)

<binding protocol="http" bindingInformation="*:80:192.168.1.102" /> 
Run Code Online (Sandbox Code Playgroud)

一旦我这样做并重新启动IISExpress ...我能够浏览我的dev-Lee机器并从我的Xoom看到我的应用程序!

  • 我得到的所有这些解决方案都是错误400 - 错误请求.有什么建议? (10认同)
  • @Krumelur,确保编辑正确的applicationhost.config文件.我的文档文件夹中的那个. (2认同)

Nas*_*ood 14

我们可以通过编辑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>
Run Code Online (Sandbox Code Playgroud)

现在我们可以使用IP地址从lan访问网站.

使用IIS Express从Lan访问本地站点

  • 这个链接已关闭 (2认同)

Jon*_*dge 6

Visual Studio 2013 SP1及更高版本(2015)包括"将服务器设置应用于所有用户(存储在项目文件中)"的设置.默认情况下启用此选项.启用时,Visual Studio将使用命令行参数启动IIS Express,使其使用不同的配置文件.'applicationhost.config'文件的位置位于'.vs\config'中的项目目录下.