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

Bad Request - Invalid Hostname ASP.net Visual Studio 2015

2015年Visual Studio调试我的网站后,我可以通过localhost:50544访问它。我想在同一网络上的另一台计算机上访问我的网站。为此,我应该能够访问该计算机地址 192.168.1.13:50544。

然而,当我访问这个地址时,我得到一个 'Bad request, invalid host name' 错误。即使我在提供网站服务的同一台机器上访问它。

听从建议here I have created the following windows firewall rule and have also tried turning the firewall off entirely.

我正在使用 IIS express,因此已添加到“~\Documents\IISExpress\config\applicationhost.config”文件

<binding protocol="http" bindingInformation=":8080:localhost" /> //original rule
<binding protocol="http" bindingInformation="*:50544:192.168.1.13" />

但是在任何机器上访问 192.168.1.13:50544 仍然会导致 'Bad Request' 错误。

bindingInformation属性的格式为:

ip address:port:host header

您需要的是:

bindingInformation="192.168.1.13:50544:*"

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

更新:

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

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

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

  • 如果没有指定主机header

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

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

IIS7+ 和 IIS Express 的正确格式是,而且一直是:

ip_address:port:host_header

您必须 运行 Visual Studio 作为管理员

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

您的 <binding protocol="http" bindingInformation="*:50544:192.168.1.13" /> 是正确的。

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

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

我在远程访问方面遇到了同样的问题,我尝试了所有这些技巧来解决它。对我来说帮助在 Web 项目配置中勾选 "Allow anonymous authentication"。

直到今天我一切正常。

  • 防火墙正常
  • VS 在管理模式下运行
  • applicationhost.config 文件正常

我刚刚禁用了 "Enable Edit and continue"(在 csproj 中),它停止工作了。我再次启用它,我们又来了。

希望对您有所帮助

如果有人仍然对此有疑问,为我解决的问题是 运行 Visual Studio 在管理员模式下。

我在某处读到,如果不在该模式下,IIS 将不允许您使用除 localhost 以外的任何其他主机作为主机(在编辑配置文件后我收到无法启动 IIS 的错误消息)

如 OP 所述,也非常重要,编辑项目中的文件 (%PROJECT%\.vs\%PROJECT%\config\applicationhost.config),而不是 IIS Express 文件夹中的文件...

此解决方案帮助我使用 .net 6 aspNetCore 应用程序。

查找文件Properties\launchSettings.json

转到iisSettings->iisExpress->applicationUrl

我将 http://localhost:51222/ 替换为 http://192.168.1.126:51222/

"iisExpress": {
  "applicationUrl": "http://192.168.1.126:51222/",
  "sslPort": 44392
}