加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

.net – 为什么在尝试使用HttpListener时会出现“AccessDenied”

发布时间:2020-12-14 18:44:28 所属栏目:资源 来源:网络整理
导读:参见英文答案 HttpListener Access Denied10个 赢7和VS2010 B2.我正在尝试使用内置的HttpListener编写一个最小的Web服务器.但是,我一直收到AccessDenied异常.这是代码: int Run(string[] args) { _server = new HttpListener(); _server.Prefixes.Add("http
参见英文答案 > HttpListener Access Denied10个
赢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);
    }

如果我绑定到系统端口,我可以理解需要以管理员身份运行,但我不明白为什么我对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

疯.这是我修改过的功能:

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}",null);
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读