使用IP地址而不是localhost时获取HTTP错误400

时间:2015-12-31 05:13:33

标签: c# asp.net rest

我用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访问我的网络应用程序,则会发生相同的错误(我得到完全相同的错误):

enter image description here

尝试使用我的IP从局域网中的某些设备其他设备使用API​​时出现同样的错误。我需要使用IP,因为我需要从我的网络访问它,为什么它不起作用,我缺少什么?我尝试thisthis但没有成功。

2 个答案:

答案 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 Host Multiple Sites Using Host Header Names to Host Multiple Web Sites

How To Use Host Header Names to Configure Multiple Web Sites