我正在用 C# 编写一个 HTTP 服务器。
当我尝试执行该功能时,HttpListener.Start()我会HttpListenerException说
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; } } } } }
是的,您可以在非管理员模式下运行 HttpListener。您需要做的就是授予特定 URL 的权限。例如
netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user
文档在这里。