代码之家  ›  专栏  ›  技术社区  ›  smvlad

HttpListener。Vista上的Start()AccessDenied错误

  •  13
  • smvlad  · 技术社区  · 17 年前

    以普通用户身份运行此代码会抛出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(netshhttpshow列出了uri)

    netsh http add urlacl url=http://+:8080/app user=domain\user
    

    仍然得到相同的错误。添加ACL确实适用于其他项目(但它们没有使用HttpListener)。我尝试了多个端口/应用程序名称组合,但都不起作用。

    你知道原因是什么吗?

    奔跑。Vista上的Net 3.5 SP1

    2 回复  |  直到 17 年前
        1
  •  15
  •   smvlad    17 年前

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

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

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

        2
  •  0
  •   BQ.    17 年前

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

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

    推荐文章