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 的启动图标,选择以管理员身份运行 。如下图


最后更新 2020-06-20
MIP.watch('startSearch', function (newVal, oldVal) { if(newVal) { var keyword = MIP.getData('keyword'); console.log(keyword); // 替换当前历史记录,新增 MIP.viewer.open('/s/' + keyword, {replace: true}); setTimeout(function () { MIP.setData({startSearch: false}) }, 1000); } }); MIP.watch('goHome', function (newVal, oldVal) { MIP.viewer.open('/', {replace: false}); });