C# 解决 HttpListener 拒绝访问异常
问题描述
在 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 的启动图标,选择以管理员身份运行 。如下图