错误请求 - 无效主机名 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:*"
更新:
似乎有些人错误地认为这个答案是不正确的。首先去阅读文档(参见上面的 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
}
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:*"
更新:
似乎有些人错误地认为这个答案是不正确的。首先去阅读文档(参见上面的 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
}