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


103

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

我所有的研究都将我发送到此博客条目:http : //blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx,这很有帮助,但确实似乎没有显示如何为在Visual Studio中启动的项目配置绑定(我无法在屏幕截图中找到屏幕,并且我已经在applicationhost.config中编辑了绑定信息,但是当我从视觉工作室)。


10
请阅读Scott Hanselman博客文章hanselman.com/blog/…–
balexandre,

Answers:


136

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

<bindings>
  <binding protocol="http" bindingInformation="*:8080:*" />
</bindings>

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

2因为您使用的是非本地主机绑定,所以需要其他权限。您可以以管理员身份运行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"

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

在“入站规则”下,选择“新规则...”。

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

12
@ user578913因此,我终于找到了正确的applicationhost.config文件,方法是打开正在运行的IIS Express任务栏,然后单击该文件,然后单击指向配置文件的链接。我在第二行将端口设置为1063,因为那是第一行的设置。运行您的命令行,一切看起来都很好。当我从网络上的另一台计算机转到“ 计算机名称”或“ 计算机名称:1063 ”时,仍然什么也没有。
卑鄙的

15
好的,因为Visual Studio分配了一个端口(而不是8080),所以Windows防火墙阻止了它。关闭Windows防火墙(可以说可以打开端口,但是我在安全的网络上),然后使用机器的IP而不是机器名称,它就可以了。谢谢。我会投票赞成,但目前还没有代表=(
卑鄙的

3
是的,如果需要打开Windows防火墙,则可以显式添加TCP端口8080(或使用的端口)。在Windows 7中,最初我尝试将端口分配给“ IIS Express Worker进程”。但这没有用。我必须使用“新规则”选项并允许端口8080。选择配置文件(域,专用,公共)也很重要。
Gautam Jain 2012年

2
自我注意:如果访问被拒绝,请以Admin身份运行Visual Studio
nVentimiglia 2013年

3
从VS2015开始,文件位置为C:\<Path\To\Solution>\.vs\config\applicationhost.config。(感谢@Talon)
卑鄙的2015年

29

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

<binding protocol="http" bindingInformation="*:80:dev-Lee" />

<binding protocol="http" bindingInformation="*:80:192.168.1.102" /> 

完成此操作并重新启动IISExpress ...之后,我能够浏览到我的dev-Lee机器并从Xoom看到我的应用程序!


10
我得到的所有这些解决方案都是错误400-错误请求。有什么建议?
Krumelur 2013年

2
@Krumelur,请确保您编辑正确的applicationhost.config文件。我的文档文件夹中的一个。
Codler 2014年

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>

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

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


6

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


1
是的,这就是我的问题-我试图编辑不正确的文件。碰巧的是,您可以通过单击任务栏图标,列出所有应用程序并选择您的应用程序,来查看IIS Express应用程序的配置位置。配置文件的路径将写在下面。我在.vs \ config中
evilkos 2015年

1
是的,我也是。非常感谢你。
Vas 2015年


1

如果您使用的是Visual Studio,请按照以下步骤操作,以通过IP地址访问IIS-Express:

  1. ipconfig在Windows命令行中获取主机IP地址:
  2. 转到$(SolutionDir).vs \ config \ applicationHost.config

  3. <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>
  4. 添加: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    带有您的IP地址
  5. 以管理员权限运行Visual Studio,一切正常
  6. 如果您尝试从远程连接,可能会发现一些防火墙问题

线索是,Visual Studio获得了它自己的applicationHost.config文件!


0

我很难在Visual Studio 2012中使用它,我从404错误变为503错误。最终对我有用的是清除IIS Express配置中的所有相关配置...

"\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项目的属性页中创建了一个新的虚拟目录,但是在创建虚拟目录之前,我将主机名更改为http:// myhost:80 /,然后单击创建虚拟目录按钮。以前,我一直在收到错误消息,说主机名必须为“ localhost”,但这次没有。在那之后,它起作用了。

简而言之,请先清除现有配置,然后重新开始。


-2

如果您的外部域是“ name.mydyndns.com”,那么您需要编写:

<binding protocol="http" bindingInformation="*:name.mydyndns.com" />

这适用于Windows 2003 Server和IIS 7.5 Express。


-3

屏幕截图

在IIS上的应用程序池中,将“启用32位应用程序”设置为“ true”。


不确定这是否真正解决了这个问题。您是否打算将其发布到另一个问题上?
ckittel '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.