System.Net.HttpListener 類別
本文提供此 API 參考文件的補充備註。
使用 類別 HttpListener ,您可以建立回應 HTTP 要求的簡單 HTTP 通訊協定接聽程式。 接聽程式在物件的存留期內 HttpListener 為作用中,並以其許可權在應用程式內執行。
若要使用 HttpListener,請使用 HttpListener 建構函式建立 類別的新實例,並使用 Prefixes 屬性來取得保存應處理之統一資源標識符 (URI) 前置 HttpListener 詞之字串的集合存取權。
URI 前置詞字串是由配置(HTTP 或 HTTPs)、主機、選擇性埠和選擇性路徑所組成。 完整前置字串的範例為 http://www.contoso.com:8080/customerData/
。 前置詞必須以正斜線結尾(“/” 具有 HttpListener 最符合所要求 URI 之前置詞的物件會回應要求。 多個 HttpListener 對象無法新增相同的前置詞; Win32Exception 如果 HttpListener 已加入已在使用的前置詞,則會擲回例外狀況。
指定埠時,主機元素可以取代為 “*”,以表示 HttpListener 如果要求的 URI 不符合任何其他前置詞,則會接受傳送至埠的要求。 例如,若要在要求 URI 未由任何 HttpListener處理時接收傳送至埠 8080 的所有要求,前置詞為 HTTP://*:8080/。 同樣地,若要指定 HttpListener 接受傳送至埠的所有要求,請將主機專案取代為 “+” 字元。 例如: https://+:8080 。 “*” 和 “+” 字元可以出現在包含路徑的前置詞中。
物件所 HttpListener 管理的 URI 前置詞支援通配符子域。 若要指定通配符子域,請使用 「*」 字元作為 URI 前置詞中主機名的一部分。 例如, HTTP://*.foo.com/。 將這個 做為 自變數傳遞至 Add 方法。
警告
不應使用最上層通配符系結 (HTTP://*:8080/ 和 http://+:8080)。 最上層萬用字元繫結可能暴露您的應用程式安全性弱點。 這對強式與弱式萬用字元皆適用。 請使用明確主機名稱,而非萬用字元。 若您擁有整個父網域 (與具弱點的 *.com
相對) 的控制權,則子網域萬用字元繫結 (例如 *.mysub.com
) 就沒有此安全性風險。 如需詳細資訊,請參閱 rfc7230 5.4 節。
若要開始接聽來自用戶端的要求,請將 URI 前置詞新增至集合並呼叫 Start 方法。 HttpListener 提供同步和異步模型來處理用戶端要求。 要求及其相關聯的回應是使用 HttpListenerContext 方法或其異步對應BeginGetContext專案、和 EndGetContext 方法所GetContext傳回的物件來存取。
如果您的應用程式在等候用戶端要求時應該封鎖,而且一次只處理一個要求,則同步模型是適當的。 使用同步模型,呼叫 GetContext 方法,等候用戶端傳送要求。 方法會將 對象傳 HttpListenerContext 回給您,以在發生物件時進行處理。
在更複雜的異步模型中,您的應用程式不會在等候要求時封鎖,而且每個要求都會在自己的執行線程中處理。 BeginGetContext使用方法,指定要針對每個傳入要求呼叫的應用程式定義方法。 在該方法內,呼叫 EndGetContext 方法以取得要求、處理要求和回應。
在任一模型中,傳入要求是使用 屬性來存取, HttpListenerContext.Request 並以 物件表示 HttpListenerRequest 。 同樣地,回應是使用 屬性來存取, HttpListenerContext.Response 並由物件表示 HttpListenerResponse 。 這些物件會與 HttpWebRequest 和 HttpWebResponse 對象共用一些功能,但後者無法與 搭配 HttpListener 使用,因為它們會實作用戶端,而不是伺服器的行為。
HttpListener可能需要客戶端驗證。 您可以指定要用於驗證的特定配置,也可以指定決定要使用的配置委派。 您必須需要某種形式的驗證,才能取得用戶端身分識別的相關信息。 如需詳細資訊,請參閱 User、 AuthenticationSchemes和 AuthenticationSchemeSelectorDelegate 屬性。
注意
如果您使用 HTTPs 建立 HttpListener ,則必須為該接聽程式選取伺服器證書。 否則,對這個 HttpListener 的要求將會失敗,且連線未預期的關閉。
注意
您可以使用網路殼層 (netsh.exe) 來設定伺服器憑證和其他接聽程式選項。 如需詳細資訊,請參閱網路殼層 (Netsh)。 可執行文件開始隨附於 Windows Server 2008 和 Windows Vista。
注意
如果您為 HttpListener指定多個驗證配置,接聽程式會以下列順序挑戰用戶端:Negotiate
、、 NTLM
Digest
和 。Basic
HTTP.sys
類別 HttpListener 建置在 之上 HTTP.sys
,這是處理 Windows 所有 HTTP 流量的核心模式接聽程式。
HTTP.sys
提供連線管理、頻寬節流和網頁伺服器記錄。
使用HttpCfg.exe工具來新增SSL憑證。