当我尝试在端口8080上点击我的网络应用时,我收到以下错误
错误请求 - 无效的主机名
HTTP错误400.请求主机名无效。
我甚至不知道从哪里开始诊断这个问题
答案 0 :(得分:64)
你检查绑定是IIS吗? (inetmgr.exe)它可能未被注册为接受8080上的所有主机名。
例如,如果你将它设置为mysite.com:8080并在localhost:8080处命中,IIS将获取请求但没有匹配的主机名绑定,因此它拒绝。
除此之外,您应该检查服务器上的IIS日志(C:\ inetpub \ logs \ wmsvc#),看看您是否看到了您的请求。然后你就会知道你的客户端或服务器本身是否存在问题。
答案 1 :(得分:28)
FWIW,如果您只想允许指向任何主机名/ IP的请求,那么您可以像这样设置绑定:
<binding protocol="http" bindingInformation="*:80:*" />
我使用此绑定,以便我可以使用IE6加载VM,然后调试我的应用程序。
编辑:使用IIS Express进行调试时,此选项配置文件的默认位置为
C:\Users\{User}\Documents\IISExpress\config\applicationhost.config
答案 2 :(得分:21)
This页面介绍了如何从本地网络上的其他计算机设置对IIS Server Express的访问。
简而言之:
1)从具有管理员权限的命令提示符:
netsh http add urlacl url=http://[your ip address]:8181/ user=everyone
2)在具有高级安全性的Windows防火墙中,为端口8181创建新的入站规则以允许外部连接
3)在applicationhost.config中,在项目的节点中添加:
<binding protocol="http" bindingInformation="*:8181:[your ip address]" />
请勿添加(如另一个答案所示):
<binding protocol="http" bindingInformation="*:8181:*" />
以上通配符绑定导致我http://192.168.1.6:8181/
答案 3 :(得分:18)
答案 4 :(得分:4)
Don't forget to bind to the IPv6 address as well! I was trying to add a site on 127.0.0.1 using localhost and got the bad request/invalid hostname error. When I pinged localhost it resolved to ::1 since IPv6 was enabled so I just had to add the additional binding to fix the issue.
答案 5 :(得分:4)
对于Visual Studio 2017
和Visual Studio 2015
,IIS Express
设置存储在隐藏的.vs
目录中,路径类似于此.vs\config\applicationhost.config
,添加如下所示的绑定会工作
<bindings>
<binding protocol="http" bindingInformation="*:8802:localhost" />
<binding protocol="http" bindingInformation="*:8802:127.0.0.1" />
</bindings>
答案 6 :(得分:3)
我不确定这是不是你的问题,但对于那些试图从他的机器上访问他的网络应用程序并遇到这个问题的人来说:
确保您已连接到127.0.0.1
(a.k.a localhost
),而不是您的外部IP地址。
您的网址应该是http://localhost:8181/
或http://127.0.0.1:8181
和不 http://YourExternalIPaddress:8181/
。
<小时/> 其他信息:
当您连接到外部IP地址时,您可以从互联网连接到您,就像您是陌生人(或黑客)一样。 但是,当您连接到本地主机时,您将自己连接到本地,并且显然不需要该块(并且完全避免)。
答案 7 :(得分:3)
这解决了我的问题:
(对不起,我的英语不好)
1.)打开cmd一个管理员并运行命令(没有方括号):netsh http add urlacl url = http://[ip地址]:[port] / user = everyone
2。)documents / iisexpress / config / applicationhost.config并在文件夹(隐藏文件夹).vs / config / applicationhost.config中的根项目文件夹中,您需要将行添加到“site”标记:
3.打开“互联网信息服务(iis)经理”,(如果找不到:在tasckbar的serch中写入“打开或关闭窗口功能”并打开小册子,然后勾选“互联网信息服务”复选框,它安装在左侧屏幕中点击计算机名称 - >网站 - &gt;默认网站,然后在右侧屏幕中单击“绑定”,单击“添加”按钮,然后按“确定”。
4.打开“具有高级安全性的Windows防火墙”,在左侧屏幕中按“入站规则”,然后在右侧屏幕中按“新建规则...”检查端口,然后按“下一步”,检查TCP和您的端口,然后按“下一步”。 ,选中“允许连接”并按“下一步”,选中所有复选框,然后按“下一步”,“名称”并按“完成”。
完成。
答案 8 :(得分:2)
您可以使用Visual Studio 2005/2008/2010 CMD工具。以管理员身份运行,然后编写
aspnet_regiis -i
最后我可以成功运行我的应用程序。
答案 9 :(得分:2)
答案 10 :(得分:1)
当我尝试使用&#34; localhost&#34;来调用web服务时出现此错误。我通过使用实际的IP来修复它(192.168 ...)
答案 11 :(得分:0)
检查本地主机文件(例如,C:\ Windows \ System32 \ drivers \ etc \ hosts)。在我的情况下,我以前使用它来指向一个开发框的URL,然后忘记它。当我重复使用相同的URL时,我一直收到错误的请求(无效的主机名),因为流量是错误的服务器。
答案 12 :(得分:0)
使用msdeploy将应用程序复制到新服务器后,我看到了同样的错误。事实证明,绑定仍然使用以前服务器的IP地址。因此,请仔细检查IIS绑定中的IP地址。 (事后似乎很明显,但我没有立即检查它)。
答案 13 :(得分:0)
确保IIS正在侦听您的端口。
就我而言,这就是问题所在。所以我不得不将端口更改为8083之类的东西,它解决了这个问题。