小编典典

HttpListener 访问被拒绝

all

我正在用 C# 编写一个 HTTP 服务器。

当我尝试执行该功能时,HttpListener.Start()我会HttpListenerException

“拒绝访问”。

当我在 Windows 7 中以管理员模式运行该应用程序时,它工作正常。

我可以让它在没有管理员模式的情况下运行吗?如果是的话怎么办?如果不是,如何在开始运行后将应用程序更改为管理员模式?

using System;
using System.Net;

namespace ConsoleApplication1
{
    class Program
    {
        private HttpListener httpListener = null;

        static void Main(string[] args)
        {
            Program p = new Program();
            p.Server();
        }

        public void Server()
        {
            this.httpListener = new HttpListener();

            if (httpListener.IsListening)
                throw new InvalidOperationException("Server is currently running.");

            httpListener.Prefixes.Clear();
            httpListener.Prefixes.Add("http://*:4444/");

            try
            {
                httpListener.Start(); //Throws Exception
            }
            catch (HttpListenerException ex)
            {
                if (ex.Message.Contains("Access is denied"))
                {
                    return;
                }
                else
                {
                    throw;
                }
            }
        }
    }
}

阅读 76

收藏
2022-06-18

共1个答案

小编典典

是的,您可以在非管理员模式下运行 HttpListener。您需要做的就是授予特定 URL 的权限。例如

netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user

文档在这里

2022-06-18