C# 解决 HttpListener 拒绝访问异常

C# 2020-06-20 阅读 1329 评论 0

问题描述

在 Windows 10 中,使用 C# 的 HttpListener 监听 8081 端口。代码如下:

try
{
    HttpListener listener = new HttpListener();
    listener.Prefixes.Add("http://*:8081/");
    listener.Start();
} catch(Exception error)
{
    Console.WriteLine(error.Message);
}

在 Visual Studio 2019 中运行后出现异常。

System.Net.HttpListenerException:“拒绝访问。”

解决方法

以下总结几种解决方法。

1. 指定完整的前缀

指定前缀为 localhost 或者 127.0.0.1

HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://127.0.0.1:8081/");
listener.Start();

2. 配置命名空间保留

可以在非管理员模式下运行 HttpListener,只需授予特定URL的权限。例如我是用 Administrator 登录系统的,在终端运行以下命令:

netsh http add urlacl url=http://*:8081/ user=Administrator

此处的 http://*:8081/,需要与代码的前缀一致,参考官方文档

3. 使用管理员身份运行

权限不足,可以用管理员身份运行。右键 Visual Studio 2019 的启动图标,选择以管理员身份运行 。如下图

以管理员身份运行 Visual Studio

最后更新 2020-06-20