gpt4 book ai didi

.net - Vista 上的 HttpListener.Start() AccessDenied 错误

转载 作者:行者123 更新时间:2023-12-03 18:30:35 27 4
gpt4 key购买 nike

以普通用户身份运行此代码会引发 HttpListenerException(拒绝访问)。片段作为管理员运行正常

class Program
{
static void Main(string[] args)
{
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://myip:8080/app/");
listener.Start();
//.... and so on
}
}

我继续使用 netsh 添加了 uri(netsh http show 列出了 uri)
netsh http add urlacl url=http://+:8080/app user=domain\user

仍然得到同样的错误。添加 ACL 确实适用于其他项目(尽管它们没有使用 HttpListener)。我尝试了多个端口/应用程序名称组合,没有任何效果。

任何想法可能是什么原因?

在 Vista 上运行 .Net 3.5 SP1

最佳答案

我不明白为什么,但就是这样。看来原因是我的网卡配置了2个IP。

如果在代码中我指定了其中一个 ip(就像我在上面的问题中所做的那样)

listener.Prefixes.Add("http://myip1:8080/app/");

然后为了避免异常我需要用IP绑定(bind)的弱通配符注册它
netsh http add urlacl url=http://myip1:8080/app user=domain\user

但是,如果我使用强通配符(加号)添加前缀
listener.Prefixes.Add("http://+:8080/app/");

并使用相同的通配符注册
netsh http add urlacl url=http://+:8080/app user=domain\user

那么没有错误,我可以从两个 ip 访问我的应用程序。

关于.net - Vista 上的 HttpListener.Start() AccessDenied 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/443640/

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