我有一个使用HttpListener的独立应用程序,它在Server 2008上运行良好但在2012年失败了。每次我尝试连接时,我会得到一些:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Hostname</h2>
<hr><p>HTTP Error 400. The request hostname is invalid.</p>
</BODY></HTML>
当我从该机器上的命令提示符连接到侦听器端口时,它工作正常(我得到了我期望的响应)。
防火墙配置正确,我甚至在禁用防火墙时尝试过。
我已经尝试了netsh http add urlacl
可想象的所有可能组合,包括:
http://+:n/ (n = port number)
http://*:n/
http://127.0.0.1:n/
http://localhost:n/
http://public_ip_address:n/
我也试过访问每个主机名。
还有各种用户组合:
user=everyone
user=hostname\administrator
我已经单独尝试过它们,并尝试过没有任何配置。
结果相同,但响应在503和400之间反弹(与上面相同的响应主体)。
IIS未在此计算机上运行。没有端口冲突。每台机器都有一个全新的安装,只有这个应用程序。
即将脱掉头发。
答案 0 :(得分:2)
显然有一些事情没有用netsh http add urlacl
表明并使用硬和软通配符“+”和“*”。
我已经解决了这个问题,而且似乎正在发生的事情是:
因此,如果您的计算机位于本地网络上并可通过Internet访问,则可能必须为将要使用的公共IP地址和公用DNS名称设置显式urlacl条目。
真的,真烦人。我希望能节省一些时间。