none
請問為什麼 HttpListener 需要管理員身分執行,WebApp卻不用? RRS feed

  • 問題

  • 環境:Windows 10 64bit  .NET 4.6.1, Windows 7 64bit .NET 4.5.1

    問題:過去我使用 System.Net.HttpListener 作為一個小型的 HTTP 服務,

    但要進行 Listen 的話,都需要管理員權限才能執行,否則就會拋出例外錯誤,

    但自從改用 Katana 的 Microsoft.Owin.Hosting.WebApp 來建構 HTTP 服務,就不需要使用管理員權限就能 Listen,

    請問這差異的原因是什麼?

    2016年7月24日 下午 03:42

解答

  • HttpListener 的實作碼:http://referencesource.microsoft.com/#System/net/System/Net/HttpListener.cs

    看起來 System.Net.HttpListener 有用到系統服務的樣子,不用管理員權限無法存取到。

    Microsoft.Owin.Hosting.WebApp 的實作碼:http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Hosting/WebApp.cs

    WebApp 沒用到系統服務,所以不用管理員權限也可以。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 503 2016年7月26日 下午 04:39
    2016年7月25日 上午 12:20
    版主

所有回覆

  • HttpListener 的實作碼:http://referencesource.microsoft.com/#System/net/System/Net/HttpListener.cs

    看起來 System.Net.HttpListener 有用到系統服務的樣子,不用管理員權限無法存取到。

    Microsoft.Owin.Hosting.WebApp 的實作碼:http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Hosting/WebApp.cs

    WebApp 沒用到系統服務,所以不用管理員權限也可以。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 503 2016年7月26日 下午 04:39
    2016年7月25日 上午 12:20
    版主
  • 您可以用netsh命令指定用非Administrator帳號執行HttpListener的Listen動作:
    netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user

    2016年7月25日 上午 12:46
  • 嗯嗯,原本以為要進行 Listen 的動作,都應該要有管理員權限才能執行(以為是預設的安全性),原來 Listen 是不一定需要使用系統服務的呀。

    2016年7月26日 下午 04:38
  • 感謝回復,主要是想預設情況下的差異~ netsh 指令也很受用
    2016年7月26日 下午 04:39