ChatGPT解决这个技术问题 Extra ChatGPT

配置 IIS Express 以实现对 VS2010 项目的外部访问

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

我的所有研究都将我发送到此博客条目:http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx,这很有帮助,但似乎没有显示如何为在 Visual Studio 中启动的项目配置绑定(我在屏幕截图中找不到屏幕,并且我编辑了绑定applicationhost.config 中的信息,但当我从 Visual Studio 运行该站点时似乎没有反映)。

请阅读 Scott Hanselman 博文hanselman.com/blog/…

B
Ben

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

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

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

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

注意: urlacl 必须与绑定完全匹配。因此,http://*:8080urlacl 将允许绑定 *: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 设置 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”


@user578913 所以我终于找到了正确的 applicationhost.config 文件,方法是打开正在运行的 IIS Express 任务栏并单击它,然后单击配置文件的链接。我在第二行将端口设置为 1063,因为这是第一行设置的。运行你的命令行,一切看起来都很好。当我从网络上的另一台机器转到 machine-namemachine-name:1063 时,我仍然一无所获。
好的,由于 Visual Studio 分配了一个端口(8080 除外),Windows 防火墙阻止了它。在关闭 Windows 防火墙(可以说我可以只打开端口,但我在一个安全的网络上)并使用我的机器的 IP 而不是机器名称后,它就可以工作了。谢谢。我会投票,但还没有代表=(
是的,如果需要打开 Windows 防火墙,那么您明确添加 TCP 端口 8080(或您使用的端口)。在 Windows 7 中,最初我尝试将端口分配给“IIS Express 工作进程”。但它没有用。我不得不使用“新规则”选项并允许端口 8080。选择配置文件(域、私有、公共)也很重要。
自我注意:如果您拒绝访问,请以管理员身份运行 Visual Studio。
从 VS2015 开始,文件位置为 C:\<Path\To\Solution>\.vs\config\applicationhost.config。 (谢谢,@Talon)
f
forsvarir

我在这个问题上也花了几个小时,试图从我的 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 中查看我的应用程序!


所有这些解决方案我得到的只是错误 400 - 错误请求。有什么建议么?
@Krumelur,确保编辑正确的 applicationhost.config 文件。我的文档文件夹中的那个。
N
Nasir Mahmood

我们可以通过编辑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 地址从局域网访问网站。

Accessing local sites from Lan using IIS Express


J
Jon Eldridge

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


是的,这就是我的问题 - 我试图编辑一个不正确的文件。碰巧的是,您可以通过单击托盘图标、列出所有应用程序并选择您的 IIS Express 应用程序来查看 IIS Express 应用程序的配置所在的位置。配置文件的路径将写在下面。我在 .vs\config
是的,对我来说也一样。非常感谢。
J
Jim W says reinstate Monica

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


这太棒了,而且很容易设置。感谢您的工作!
D
Daniel Eisenreich

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

获取您的主机 IP 地址: ipconfig 在 Windows 命令行 GoTo $(SolutionDir).vs\config\applicationHost.config Find 添加: 使用您的 IP 地址 以管理员权限运行您的 Visual Studio一切都应该工作 如果您尝试从远程连接,可能会寻找一些防火墙问题

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


s
stu

我在 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”,但这次不是。在那之后,它奏效了。

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


L
Leigh

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

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

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


R
René Vogt

https://i.stack.imgur.com/gmEmv.png

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


不确定这实际上是在解决这个问题。你的意思是在另一个问题上发布这个?