HttpListenerElement 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示組態檔中的 HttpListener 項目。 此類別無法獲得繼承。
public ref class HttpListenerElement sealed : System::Configuration::ConfigurationElement
public sealed class HttpListenerElement : System.Configuration.ConfigurationElement
type HttpListenerElement = class
inherit ConfigurationElement
Public NotInheritable Class HttpListenerElement
Inherits ConfigurationElement
- 繼承
備註
這個類別會對應至 < HTTPListener > 元素 (網路設定) 組態專案。 這個類別可讓您以程式設計方式存取可儲存在組態檔中的資訊。
屬性 UnescapeRequestUrl 會指出是否 HttpListener 使用未經處理的 URI,而不是轉換的 URI,其中會轉換任何百分比編碼值,並採取其他正規化步驟。
HttpListener當實例透過 http.sys
服務接收要求時,它會建立 所提供的 http.sys
URI 字串實例,並將它公開為 HttpListenerRequest.Url 屬性。
服務 http.sys
會公開兩個要求 URI 字串:
原始 URI
轉換的 URI
原始 URI 是在 System.Uri HTTP 要求的要求行中提供的:
GET /path/
Host: www.contoso.com
針對上述要求所提供的 http.sys
原始 URI 為 「/path/」。 這代表透過網路傳送 HTTP 動詞動詞之後的字串。
服務 http.sys
會使用 HTTP 要求行中提供的 URI 和主機標頭,從要求中提供的資訊建立轉換的 URI,以判斷應該轉送要求的來源伺服器。 這可藉由比較要求中的資訊與一組已註冊的 URI 前置詞來完成。 HTTP Server SDK 檔將這個已轉換的 URI 稱為 HTTP_COOKED_URL 結構。
若要能夠比較要求與已註冊的 URI 前置詞,必須完成要求的某些正規化。 針對上述範例,轉換後的 URI 如下所示:
http://www.contoso.com/path/
服務會 http.sys
Uri.Host 結合要求行中的屬性值和字串,以建立轉換的 URI。 此外, http.sys
類別 System.Uri 也會執行下列動作:
取消逸出所有百分比編碼的值。
將百分比編碼的非 ASCII 字元轉換成 UTF-16 字元表示。 請注意,支援 UTF-8 和 ANSI/DBCS 字元,以及使用 %uXXXX 格式) (Unicode 編碼的 Unicode 字元。
執行其他正規化步驟,例如路徑壓縮。
由於要求不包含用於百分比編碼值之編碼的任何資訊,因此可能不可以藉由剖析百分比編碼值來判斷正確的編碼方式。
因此 http.sys
,提供兩個登錄機碼來修改程式:
登錄金鑰 | 預設值 | 描述 |
---|---|---|
EnableNonUTF8 | 1 | 如果為零, http.sys 則只接受 UTF-8 編碼的 URL。如果不是零, http.sys 也接受要求中的 ANSI 編碼或 DBCS 編碼 URL。 |
FavorUTF8 | 1 | 如果不是零, http.sys 則一律會先嘗試將 URL 解碼為 UTF-8;如果該轉換失敗且 EnableNonUTF8 為非零,Http.sys會嘗試將它解碼為 ANSI 或 DBCS。如果零 (且 EnableNonUTF8 不是零) , http.sys 則會嘗試將它解碼為 ANSI 或 DBCS;如果這不成功,則會嘗試 UTF-8 轉換。 |
收到要求時 HttpListener ,它會使用 從 http.sys
轉換的 URI 做為 屬性的 Url 輸入。
除了 URI 中的字元和數位之外,還需要支援字元。 例如,下列 URI 可用來擷取客戶號碼 「1/3812」 的客戶資訊:
http://www.contoso.com/Customer('1%2F3812')/
請注意 Uri (%2F) 中的百分比編碼斜線。 這是必要的,因為在此情況下,斜線字元代表資料,而不是路徑分隔符號。
將字串傳遞至 Uri 建構函式將會導致下列 URI:
http://www.contoso.com/Customer('1/3812')/
將路徑分割成其區段會導致下列元素:
Customer('1
3812')
這不是要求寄件者的意圖。
UnescapeRequestUrl如果屬性設定為 false,則當 收到要求時 HttpListener ,它會使用原始 URI,而不是將轉換的 URI 作為 http.sys
屬性的 Url 輸入。
建構函式
HttpListenerElement() |
初始化 HttpListenerElement 類別的新執行個體。 |
屬性
方法
適用於
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應