【问题标题】:Why HttpListener couldn't start?为什么 HttpListener 无法启动?
【发布时间】:2013-11-12 09:07:56
【问题描述】:

我正在使用 .NET 设计一个 http 服务器。 我基本上使用 HttpListener 从客户端获取 http 请求。 一开始,我必须指定 URL,然后将该 URL 添加到 HttpListener。 然后,我必须让 HttpListener 开始监听。 当它开始收听时,就会出现问题。当它开始监听时会产生一个异常。

代码如下:
字符串 url = "http://*:80/"; //其中 * 是我的 PC 的 IP 地址。
监听器 = 新的 HttpListener();
listener.Prefixes.Add(url);

listener.Start(); //this is where exception occurs, it couldn't start!!!

我的猜测是我必须使用 netsh 注册该 URL。这是正确的吗?

【问题讨论】:

  • 异常说明了什么?你在 80 端口上还有其他东西在运行吗?

标签: .net http url ip


【解决方案1】:

我能想到这可能发生的两个简单原因:

  • 您有其他东西已经在监听 80 端口(例如 IIS)
  • 您无权监听 80 端口

该异常应指明是哪种情况。注意异常消息总是很重要的——很多错误可以通过仔细阅读异常来修复。

从不同的端口开始监听可能是最简单的。

编辑:在运行一些实验时我发现:

  • 端口 8080 在我的笔记本电脑上似乎正在使用(或至少无法访问)。不过,使用端口 8888 和 12345 都可以正常工作。只需在这方面进行试验。
  • 我可以使用“localhost”代替我的 IP 地址,但即使是 127.0.0.1 也需要我以管理员身份运行程序。作为管理员,我可以使用任何网络接口。

【讨论】:

  • 异常消息是:{“访问被拒绝”}。我换了8080端口,还是一样的异常。
  • @SHuoDo:你试过用localhost代替你的IP地址吗?也尝试各种端口。我已经用更多信息编辑了我的答案。
  • 我都试过了,几个不同的端口号和本地主机。它仍然无法正常工作。你是如何以管理员身份运行 c# 程序的?
  • @SHuoDo:我从以管理员身份运行的命令行运行它。
  • 我实际上解决了这个问题。问题是由防火墙引起的。防火墙禁用所有端口的访问权限。我必须让防火墙启用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 2020-06-04
相关资源
最近更新 更多