我用C#和VS2015创建了一个带有Rest API的简单Web应用程序。该网络应用程序正在http://localhost:1623
中运行,并且运行正常。
现在我正在测试使用Postman
进行POST的Rest API,我的网址是http://localhost:1623/api/foo/bar
,标题为Content-Type: application/json
。一切都很好,我得到了正确的答案。
我的电脑的本地IP地址是192.168.0.174
,因此我将网址更改为http://192.168.0.174:1623/api/foo/bar
,现在我得到HTTP Error 400. The request hostname is invalid
,为什么?不应该是一样的吗?如果我尝试在浏览器中使用192.168.0.174:1623
而不是http://localhost:1623
访问我的网络应用程序,则会发生相同的错误(我得到完全相同的错误):
尝试使用我的IP从局域网中的某些设备其他设备使用API时出现同样的错误。我需要使用IP,因为我需要从我的网络访问它,为什么它不起作用,我缺少什么?我尝试this和this但没有成功。
答案 0 :(得分:5)
通过this答案编辑applicationhost.config
解决了问题,在VS2015中,它位于[Project Folder]\.vs\config\applicationhost.config:
由于Jack答案中的链接网址目前无效,并且 对另一个人的答案涵盖了解决方案(至少对我而言) 问题,我将在此重复一下答案:
您可以设置多个绑定。因此,您可以设置绑定 对于您希望投放的每个外部地址,它将起作用:
<bindings>
<binding protocol="http" bindingInformation=":1904:" />
<binding protocol="http" bindingInformation=":1904:machineName" />
<binding protocol="http" bindingInformation=":1904:10.1.10.123" />
</bindings>
this也很有帮助。在我的情况下,我做了:
<bindings>
<binding protocol="http" bindingInformation=":1623:" />
<binding protocol="http" bindingInformation=":1623:<my pc name>" />
<binding protocol="http" bindingInformation=":1623:192.168.0.174" />
</bindings>
答案 1 :(得分:1)
IIS是一个多网站服务器。方法与主机标题名称截然不同。所以你需要在你的网站上设置它。
请参阅此设置链接:
How To Use Host Header Names to Configure Multiple Web Sites