107

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

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

4

9 回答 9

140

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

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

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

2因为您使用的是非本地主机绑定,所以需要额外的权限。您可以以管理员身份运行 VS,或者最好添加 URL ACL以授予所需的权限。在下面的示例中,每个人都获得了权限,但您可以使用自己的用户名。

注意:必须urlacl与绑定完全匹配。所以urlaclforhttp://*: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 使用的整个范围,但请注意这不太安全)。
  • 操作是“允许连接”
  • 配置文件将是以下之一。如有疑问,请选择“域 + 私有”。
    • “域”,如果您的桌面是公司桌面并且只能在本地域上运行
    • “Domain + Private” 如果你是非企业环境中的私人开发机器,或者是在家办公也需要工作的企业笔记本电脑。
    • “域、私有和公共”,如果您需要在非私有网络上进行演示。
  • 名称应该类似于“IIS Express Dev Server”
于 2011-03-25T21:29:10.540 回答
29

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

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

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

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

于 2012-07-30T01:47:25.150 回答
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 地址从局域网访问网站。

使用 IIS Express 从局域网访问本地站点

于 2014-04-09T10:36:24.337 回答
6

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

于 2015-05-22T08:10:12.550 回答
2

我们制作了一个名为 Conveyor 的免费 VS(2012、2013、2015)扩展,它允许这样做 - 您可以通过 VS 中的工具->扩展... 菜单或画廊网站https://visualstudiogallery.msdn.microsoft 找到它。 com/a429dbb7-a982-4541-b401-934375c02c0f?SRC=Home

于 2016-11-02T17:26:57.240 回答
1

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

  1. 获取您的主机 IP 地址:ipconfig在 Windows 命令行中
  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 文件!

于 2017-03-31T07:37:10.587 回答
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”,但这次不是。在那之后,它奏效了。

简而言之,首先清除现有配置并重新开始。

于 2015-01-27T21:48:08.107 回答
-2

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

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

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

于 2013-06-07T06:03:05.160 回答
-3

截屏

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

于 2016-02-20T15:37:09.000 回答