HttpListener.Start()Vista上的AccessDenied错误

smv*_*lad 13 .net permissions windows-vista

以普通用户身份运行此代码会抛出HttpListenerException(访问被拒绝).Snippet作为管理员运行正常

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

我继续使用netsh添加uri(netsh http show列出了uri)

netsh http add urlacl url=http://+:8080/app user=domain\user
Run Code Online (Sandbox Code Playgroud)

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

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

在Vista上运行.Net 3.5 SP1

smv*_*lad 15

我不明白为什么,但在这里.似乎原因是我的网卡配置了2个IP.

如果在代码中我指定了一个ips(就像我上面提到的那样)

listener.Prefixes.Add("http://myip1:8080/app/");
Run Code Online (Sandbox Code Playgroud)

然后为了避免异常我需要用IP绑定的弱通配符注册它

netsh http add urlacl url=http://myip1:8080/app user=domain\user
Run Code Online (Sandbox Code Playgroud)

但是,如果我添加前缀与强通配符(加号)

listener.Prefixes.Add("http://+:8080/app/");
Run Code Online (Sandbox Code Playgroud)

并使用相同的外卡注册

netsh http add urlacl url=http://+:8080/app user=domain\user
Run Code Online (Sandbox Code Playgroud)

然后没有错误,我可以从两个IP访问我的应用程序.