错误的请求 – 无效的主机名IIS7

当我尝试在端口8080上打我的web应用程序时,出现以下错误

错误的请求 – 无效的主机名
HTTP错误400.请求主机名无效。

我甚至不知道从哪里开始诊断这个问题

你检查绑定是IIS吗? (inetmgr.exe)它可能未被注册为接受8080上的所有主机名。

例如,如果您将它设置为mysite.com:8080并在localhost:8080上命中,则IIS将获得请求,但不会有主机名绑定匹配,因此拒绝。

除此之外,您应该检查服务器上的IIS日志(C:\ inetpub \ logs \ wmsvc#),看看您是否看到了您的请求。 然后你会知道它是否在你的客户端或服务器本身存在问题。

FWIW,如果你想只允许指向任何主机名/ IP的请求,那么你可以设置你的绑定,如下所示:

<binding protocol="http" bindingInformation="*:80:*" /> 

我使用这个绑定,以便我可以加载一个虚拟机与IE6,然后debugging我的应用程序。


编辑:在使用IIS Express进行debugging时,此选项的configuration文件的默认位置是

 C:\Users\{User}\Documents\IISExpress\config\applicationhost.config 

Microsoft的此页介绍了如何设置从本地networking上的其他计算机访问IIS Server Express。

简而言之:

1)从命令提示符用pipe理员权限:

 netsh http add urlacl url=http://[your ip address]:8181/ user=everyone 

2)在具有高级安全性的Windows防火墙中,为端口8181创build一个新的入站规则以允许外部连接

3)在applicationhost.config中,在您的项目的节点中添加:

<binding protocol="http" bindingInformation="*:8181:[your ip address]" />

不要添加(如另一个答案中所build议的):

<binding protocol="http" bindingInformation="*:8181:*" />

上面的通配符绑定打破了我的访问http://192.168.1.6:8181/

所以,我解决了这个问题,在IISpipe理器中进入我的网站,并将站点绑定中的主机名从localhost更改为*。 立即开始工作。

IIS中的站点绑定

不要忘记绑定到IPv6地址! 我试图使用本地主机在127.0.0.1添加一个网站,并得到了错误的请求/无效的主机名错误。 当我pinged本地主机它解决:: 1,因为IPv6已启用,所以我只需要添加额外的绑定来解决这个问题。

IIS站点绑定

您可以使用Visual Studio 2005/2008/2010 CMD工具。 运行它作为pipe理员,并写

 aspnet_regiis -i 

最后我可以成功地运行我的应用程序。

我不确定这是否是你的问题,但是对于任何试图从他的机器访问他的Web应用程序,并有这个问题的人:

确保你连接到127.0.0.1 (aka localhost )而不是你的外部IP地址。

您的url应该是类似于http://localhost:8181/http://127.0.0.1:8181不是 http://YourExternalIPaddress:8181/


附加信息:
这个原因是因为你的防火墙可能会阻止你的请求。 它可以是你的操作系统的防火墙,它可以是(通常的)你的路由器。

当你连接到你的外部IP地址,你从互联网连接到你,就像你是一个陌生人(或黑客)。
但是,当你连接到你的本地主机,你本地连接作为你自己,该块显然不需要(&完全避免)。

当我尝试使用“localhost”调用web服务时出现此错误。 我通过使用实际的IP来修复它(192.168 …)

检查您的本地主机文件(例如C:\ Windows \ System32 \ drivers \ etc \ hosts)。 在我的情况下,我以前用这个指向一个开发框的URL,然后忘了它。 当我重复使用相同的URL时,我一直收到错误的请求(无效的主机名),因为stream量去了错误的服务器。

使用msdeploy将应用程序复制到新的服务器后,我看到了相同的错误。 事实certificate,绑定仍然使用以前的服务器的IP地址。 所以,请仔细检查IIS绑定中的IP地址。 (事后似乎很明显,但没有立即发生,我检查它)。

这解决了我的问题:
(对不起,我的英语不好)
1.)打开cmdpipe理员并运行命令(没有方括号):netsh http add urlacl url = http:// [ip address address]:[port] / user = everyone

2.)文件/iisexpress/config/applicationhost.config并在你的根目录项目文件夹(隐藏文件夹).vs / config / applicationhost.config中你需要添加一行到“site”标签:

3.)打开“Internet信息服务(iis)pipe理器”,(如果没有find:在tasckbar的serch中打开“打开或closures窗口function”,打开resulet,然后选中“internet信息服务”checkbox及其安装)在左侧屏幕中点击计算机名称 – >站点 – >默认网站,然后点击右边的屏幕“绑定”点击添加button,然后按OK。

4.)打开“高级安全Windows防火墙”,在左边屏幕按“入站规则”,然后在右侧屏幕“新规则…”检查端口,然后按下一步,检查TCP和您的端口,然后按下一步,允许连接“,然后按下一步,选中所有checkbox并按下一步,退出名称,然后按完成。

完成。

对于Visual Studio 2017Visual Studio 2015IIS Express设置存储在隐藏的.vs目录中,path是这样的.vs\config\applicationhost.config ,像下面的添加绑定将工作

 <bindings> <binding protocol="http" bindingInformation="*:8802:localhost" /> <binding protocol="http" bindingInformation="*:8802:127.0.0.1" /> </bindings>