C# HTTP 服务器访问被拒绝

Posted

技术标签:

【中文标题】C# HTTP 服务器访问被拒绝【英文标题】:C# HTTP Server Access Denied 【发布时间】:2021-03-22 09:21:36 【问题描述】:

所以我正在用 C# 在我的电脑上创建一个本地服务器。当我在http://localhost:8000 上运行它时,服务器响应并且工作正常,但是当我尝试在 LAN IP 地址http://192.168.1.113:8000 上使用它时,它给了我一个访问错误。

An unhandled exception of type 'System.Net.HttpListenerException' occurred in System.Net.HttpListener.dll: 'Access is denied.'
   at System.Net.HttpListener.AddPrefixCore(String registeredPrefix)
   at System.Net.HttpListener.AddAllPrefixes()
   at System.Net.HttpListener.Start()
   at HttpListenerExample.HttpServer.Main(String[] args) in C:\Users\abram\Desktop\Code\C#\myProgram\Program.cs:line 100

我已尝试进行 URL 预订:netsh http add urlacl url=http://+:8000/myProgram user=abram

这无济于事。 有人有这方面的经验吗?

【问题讨论】:

【参考方案1】:

您需要允许端口 8000 通过 Windows 防火墙。

【讨论】:

【参考方案2】:

您在调用netsh http add urlacl 时保留的URL 需要与您添加到HttpListener 的前缀完全匹配。 HttpListener 前缀需要以斜线结尾。所以你的代码应该看起来像这样:

httpListener.Prefixes.Add("http://+:8000/myProgram/");

你的命令应该是这样的:

netsh http add urlacl url=http://+:8000/myProgram/ user=abram

如果您对任一 URI 进行任何更改,您需要在命令中反映该更改。

您还需要确保abram 是域/机器上的有效用户。

此外,您可能需要查看 Grapevine 5 以运行本地服务器。

【讨论】:

以上是关于C# HTTP 服务器访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

连接 MySql 时 C# 中的访问被拒绝错误。我已经拥有数据库的完全访问权限

在 C# 中访问路径被拒绝错误

使用 C# 创建目录时访问被拒绝

“访问路径......被拒绝”(.NET C#)

C# - 尝试获取进程句柄时访问被拒绝

如何解决安装IIS时出现HTTP错误403禁止访问?