“Bad Request - Invalid Hostname” 的解决办法
最近在做一个微信端的应用,除了在本地测试之外,有时候还需要在手机上进行测试。
假设我的手机和 PC 在同一内网内,PC 的 IP 是192.168.1.2
,Website 的端口是12345
。
我的第一反应是,我应该在手机上通过http://192.168.1.2:12345
来访问我的站点。
然而,我得到了这样一个错误:
Bad Request - Invalid Hostname
------------------------------------------------
HTTP Error 400. The request hostname is invalid.
方法很简单,Visual Studio 2015 的项目目录中会有一个.vs
的文件夹,打开.vs\config\applicationhost.config
,找到目标站点的配置节点,例如:
<site name="Demo.Website" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="D:\Projects\Demo\Demo.Website" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:52945:localhost" />
<binding protocol="http" bindingInformation="*:52945:*" /> <!-- 加上这一行 -->
</bindings>
</site>
网上大部分教程基本就说了这么多,然而我在这样配置了之后依然有问题。甚至有些教程是直接把localhost
改成了*
,也可以理解。然而,我每次这么做之后,重新启动站点的时候,总是会自动重新生成一个节点,那个里面配置的是localhost
。纠结了一下午。
最后发现是权限的问题,如果想配置非localhost
的绑定,VS 必须以管理员权限运行才行。这样如果只配置了非localhost
的绑定,就不会新建了,或者配置多条绑定也可以生效了。
遇到这个问题一直解决不了的朋友可以参考下。
另外如果站点甚至无法访问的话,可以新建一条防火墙入站规则,把端口号配置进去。
评论区