错误的请求 – 无效的主机名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更改为*。 立即开始工作。
不要忘记绑定到IPv6地址! 我试图使用本地主机在127.0.0.1添加一个网站,并得到了错误的请求/无效的主机名错误。 当我pinged本地主机它解决:: 1,因为IPv6已启用,所以我只需要添加额外的绑定来解决这个问题。
您可以使用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 2017
和Visual Studio 2015
, IIS Express
设置存储在隐藏的.vs
目录中,path是这样的.vs\config\applicationhost.config
,像下面的添加绑定将工作
<bindings> <binding protocol="http" bindingInformation="*:8802:localhost" /> <binding protocol="http" bindingInformation="*:8802:127.0.0.1" /> </bindings>
- IIS7caching控制
- ASP.NET Web Garden – 我需要多less个工作进程?
- 如何解决:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误的模块“ManagedPipelineHandler”
- Visual Studio 2013提供了“不能添加types'mimeMap'的重复收集条目”
- 当ASP.NET MVC中的file upload超过允许的大小时显示自定义错误页面
- ASP.NET Web API应用程序在IIS 7上部署时提供了404
- IIS 7日志文件自动删除?
- URL中的点导致404与ASP.NET mvc和IIS
- 在IIS中,为什么窗口身份validation不会显示为我的Web应用程序的一个选项?