共用方式為


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 。 這些物件會與 HttpWebRequestHttpWebResponse 對象共用一些功能,但後者無法與 搭配 HttpListener 使用,因為它們會實作用戶端,而不是伺服器的行為。

HttpListener可能需要客戶端驗證。 您可以指定要用於驗證的特定配置,也可以指定決定要使用的配置委派。 您必須需要某種形式的驗證,才能取得用戶端身分識別的相關信息。 如需詳細資訊,請參閱 UserAuthenticationSchemesAuthenticationSchemeSelectorDelegate 屬性。

注意

如果您使用 HTTPs 建立 HttpListener ,則必須為該接聽程式選取伺服器證書。 否則,對這個 HttpListener 的要求將會失敗,且連線未預期的關閉。

注意

您可以使用網路殼層 (netsh.exe) 來設定伺服器憑證和其他接聽程式選項。 如需詳細資訊,請參閱網路殼層 (Netsh)。 可執行文件開始隨附於 Windows Server 2008 和 Windows Vista。

注意

如果您為 HttpListener指定多個驗證配置,接聽程式會以下列順序挑戰用戶端:Negotiate、、 NTLMDigest和 。Basic

HTTP.sys

類別 HttpListener 建置在 之上 HTTP.sys,這是處理 Windows 所有 HTTP 流量的核心模式接聽程式。 HTTP.sys 提供連線管理、頻寬節流和網頁伺服器記錄。 使用HttpCfg.exe工具來新增SSL憑證。