当我尝试在端口8080上访问我的Web应用程序时,出现以下错误
错误的请求-无效的主机名
HTTP错误400。请求的主机名无效。
我什至不知道从哪里开始诊断这个问题
Answers:
您检查绑定是IIS吗?(inetmgr.exe)可能未注册为接受8080上的所有主机名。
例如,如果将其设置为mysite.com:8080并在localhost:8080处将其击中,则IIS将获得该请求,但没有匹配的主机名绑定,因此它被拒绝。
除此之外,您应该检查服务器上的IIS日志(C:\ inetpub \ logs \ wmsvc#),看看是否正在查看请求。然后,您将知道这是您的客户端还是服务器本身的问题。
FWIW,如果您只想允许定向到任何主机名/ ip的请求,则可以这样设置绑定:
<binding protocol="http" bindingInformation="*:80:*" />
我使用此绑定,以便可以使用IE6加载VM,然后调试我的应用程序。
编辑:使用IIS Express进行调试时,此选项的配置文件的默认位置是
C:\Users\{User}\Documents\IISExpress\config\applicationhost.config
此页由微软介绍了如何设置从其他计算机在本地网络上访问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/
netsh http delete urlacl url=http://[your ip address]:8181/
对于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>
语法:https : //docs.microsoft.com/zh-cn/dotnet/api/microsoft.web.administration.binding.bindinginformation?view=iis-dotnet
<bindings> <binding protocol="http" bindingInformation="localhost:8802:*" /> <binding protocol="http" bindingInformation="127.0.0.1:8802:*"/> </bindings>
这解决了我的问题(对不起我的英语不好):
以管理员身份打开cmd并运行命令(不带方括号):
netsh http add urlacl url=http://[ip adress]:[port]/ user=everyone
在documents/iisexpress/config/applicationhost.config
(隐藏的)文件夹中的根项目文件夹中和之中:.vs/config/applicationhost.config
您需要在“站点”标签中添加行:
<binding protocol="http" bindingInformation="*:8080:192.xxx.xxx.xxx" />
打开“ Internet信息服务(iis)管理器”
(要找到它:在任务栏中的搜索中编写“打开或关闭窗口功能”并打开结果,然后选中“ Internet信息服务”复选框并安装它):
打开“具有高级安全性的Windows防火墙”,
完成。
我不确定这是否是您的问题,但是对于试图从他的计算机访问他的Web应用程序并遇到此问题的任何人:
确保您连接到127.0.0.1
(akalocalhost
),而不是外部IP地址。
您的URL应该是http://localhost:8181/
or http://127.0.0.1:8181
,不是 http://YourExternalIPaddress:8181/
。
当您连接到外部IP地址时,就可以从Internet连接到您,就像您是陌生人(或黑客)一样。
但是,当您连接到本地主机时,您可以自己本地连接,显然不需要该块(并且完全避免使用)。
localhost
,而是它所指的(127.0.0.1
)。我要说的是连接到该地址,而不是连接到您外部可见的IP。不依赖本地主机,它只是用作同义词。我将编辑答案以使其更清楚。