微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么即使在设置了适当的 URL ACL 之后,我的 C# 网络服务器也会收到 404 消息?

如何解决为什么即使在设置了适当的 URL ACL 之后,我的 C# 网络服务器也会收到 404 消息?

我有一个用 C# 中的 HttpListener 构建的 Web 服务器。它使用端口 80 上的特定路径来从另一个 C# 应用程序调用 GET 请求。它在我的开发机器和虚拟机之间工作。我在另一台计算机上设置它,然后我开始从服务器收到 404 响应。我运行以下命令来打开端口和路径:

netsh advfirewall firewall add rule name="Server HTTP" dir=in action=allow protocol=TCP localport=80

netsh http add urlacl url=http://+:80/svrpath/ user=%USERDOMAIN%%USERNAME% listen=yes

当我调用简单的 get 到此服务器时,我不明白为什么我总是收到 404 错误。如果我在我的开发机器上运行服务器,它工作正常并且 GET 返回预期的 json 字符串。我什至关闭了双方的防火墙,它继续给我 404 错误。我已经从 Web 浏览器运行 get 命令,结果相同。

我还尝试将“add urlacl”命令中的用户更改为“所有人”和“管理员”等值,但无济于事。

在 Google 上搜索并没有给我任何解决方案,我正在寻找任何知道可能导致此类问题的原因的人。所有有问题的机器都运行 Windows 10 build 1709 并连接到本地网络。我确定我在某处错过了一些愚蠢的东西,但我无法弄清楚它是什么。

解决方法

此时我所能得出的结论是另一个进程正在锁定端口,因此我的应用程序无法响应请求。重新启动并完全重新安装程序(包括重新运行所有 netsh 命令)解决了该问题,并且此后此问题没有再次发生。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。