HttpListener.Start()Vista上的AccessDenied错误

时间:2009-01-14 16:25:23

标签: .net windows-vista permissions

以普通用户身份运行此代码会抛出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
     }
}

我继续使用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 个答案:

答案 0 :(得分:15)

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

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

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

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

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访问我的应用程序。

答案 1 :(得分:0)

该URI是否已在系统上注册?

http://msdn.microsoft.com/en-us/library/system.net.httplistenerexception.aspx说这是一个原因。