错误的请求 - 无效的主机名ASP.net Visual Studio 2015

RAD*_*ack 24 asp.net iis port

在Visual Studio 2015中调试我的网站后,我可以通过localhost:50544访问它.我想在不同的计算机上访问我的网站,该网站也在同一个网络上.要做到这一点,我应该能够访问计算机地址192.168.1.13:50544.

但是,访问此地址时,出现"错误请求,主机名无效"错误.即使我在网站正在服务的同一台机器上访问它.

根据这里的建议,我创建了以下Windows防火墙规则,并尝试完全关闭防火墙.防火墙规则的图片

我正在使用IIS express,因此已添加到'〜\ Documents\IISExpress\config\applicationhost.config'文件中

<binding protocol="http" bindingInformation=":8080:localhost" /> //original rule
<binding protocol="http" bindingInformation="*:50544:192.168.1.13" />
Run Code Online (Sandbox Code Playgroud)

但是在任何机器上访问192.168.1.13:50544仍然会导致"错误请求"错误.

Sea*_*ull 23

您必须以管理员身份运行Visual Studio

在Visual Studio 2015中,applicationhost.config 它位于项目本身的文件夹中.Esc MyProjectName\.vs\config,请注意该.vs文件夹可能被隐藏.从那里更改IP,而不是IISExpress文件夹.

<binding protocol="http" bindingInformation="*:50544:192.168.1.13" />是对的.

  • 以管理员身份运行是关键! (5认同)

Kev*_*Kev 22

bindingInformation属性的格式为:

ip address:port:host header
Run Code Online (Sandbox Code Playgroud)

你需要的是:

bindingInformation="192.168.1.13:50544:*"
Run Code Online (Sandbox Code Playgroud)

资料来源:https://www.iis.net/configreference/system.applicationhost/sites/site/bindings/binding?showTreeNavigation = true#006

更新:

似乎有些人错误地认为这个答案是不正确的.首先阅读文档(参见上面的链接)并阅读示例.

其次IIS和IIS Express本质上是相同的产品.IIS Express已经过调整,因此非管理员可以在开发人员PC上运行IIS,而他们可能没有完全的本地管理员权限.尽管如此,IIS和IIS Express都使用相同的applicationHost.config文件格式,这意味着bindingInformation两种产品的属性格式完全相同.

(错误的):50544:192.168.1.13 bindingInformation字符串起作用的原因是(正确或错误):

  • 如果没有指定主机头

  • 如果绑定信息字段的第一部分中没有匹配的IP地址

...然后IIS将尝试匹配绑定信息字符串的主机头部分中的IP地址.

IIS7 +和IIS Express的正确格式是,并始终是:

ip_address:port:host_header
Run Code Online (Sandbox Code Playgroud)

  • 对于VS 2015 / IIS10,情况并非如此。&lt;binding protocol =“ http” bindingInformation =“ *:50544:192.168.1.13” /&gt;是正确的。 (2认同)

Jim*_*ica 10

我们制作了一个名为Conveyor的扩展程序,您可以使用它来打开IIS Express以进行外部访问,而无需更改任何配置.

https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti

  • 出色的工具。表现出色(VS 2017)。谢谢。 (2认同)
  • 这里的其他答案都不适合我,但这是一个非常简单的解决方案,第一次奏效。谢谢! (2认同)