gpt4 book ai didi

.net - 为什么我在尝试使用 HttpListener 时收到 "AccessDenied"?

转载 作者:行者123 更新时间:2023-12-02 08:28:10 27 4
gpt4 key购买 nike

Win 7 和 VS2010 B2。我正在尝试使用内置 HttpListener 编写一个最小的 Web 服务器。但是,我不断收到 AccessDenied 异常。这是代码:

    int Run(string[] args) {

_server = new HttpListener();
_server.Prefixes.Add("http://*:9669/");
_server.Start();

Console.WriteLine("Server bound to: {0}", _server.Prefixes.First());

_server.BeginGetContext(HandleContext, null);
}

如果我绑定(bind)到系统端口,我可以理解需要以管理员身份运行,但我不明白为什么绑定(bind)到 9669 应该需要特殊权限。

有什么想法吗?

最佳答案

感谢这个问题:Can I listen on a port (using HttpListener or other .NET code) on Vista without requiring administrator priveleges?

我有答案。

netsh http add urlacl url=http://*:9669/ user=fak listen=yes

Crazy. Here is my revised function:

    int Run(string[] args) {

var prefix = "http://*:9669/";
var username = Environment.GetEnvironmentVariable("USERNAME");
var userdomain = Environment.GetEnvironmentVariable("USERDOMAIN");

_server = new HttpListener();
_server.Prefixes.Add(prefix);

try {
_server.Start();
}
catch (HttpListenerException ex) {
if (ex.ErrorCode == 5) {
Console.WriteLine("You need to run the following command:");
Console.WriteLine(" netsh http add urlacl url={0} user={1}\\{2} listen=yes",
prefix, userdomain, username);
return -1;
}
else {
throw;
}
}


Console.WriteLine("Server bound to: {0}", _server.Prefixes.First());

_server.BeginGetContext(HandleContext, null);
}

关于.net - 为什么我在尝试使用 HttpListener 时收到 "AccessDenied"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987749/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com