1. ホーム
  2. windows-7

[解決済み】HttpListenerのアクセスが拒否されました。

2022-04-11 08:08:37

質問

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;
                }
            }
        }
    }
}

解決方法は?

はい、非管理者モードでHttpListenerを実行することができます。 必要なのは、特定の URL に対してパーミッションを与えることだけです。

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

ドキュメンテーションは こちら .