HttpListenerElement 類別

定義

表示組態檔中的 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
繼承
HttpListenerElement

備註

這個類別會對應至 < 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.sysUri.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 類別的新執行個體。

屬性

CurrentConfiguration

取得最上層 Configuration 執行個體的參考,這個執行個體表示目前 ConfigurationElement 執行個體所屬的組態階層架構。

(繼承來源 ConfigurationElement)
ElementInformation

取得 ElementInformation 物件,其中包含 ConfigurationElement 物件之不可自訂的資訊和功能。

(繼承來源 ConfigurationElement)
ElementProperty

取得表示 ConfigurationElementProperty 物件本身的 ConfigurationElement 物件。

(繼承來源 ConfigurationElement)
EvaluationContext

取得 ConfigurationElement 物件的 ContextInformation 物件。

(繼承來源 ConfigurationElement)
HasContext

取得值,指出 CurrentConfiguration 屬性是否為 null

(繼承來源 ConfigurationElement)
Item[ConfigurationProperty]

取得或設定此組態項目的屬性 (Property) 或屬性 (Attribute)。

(繼承來源 ConfigurationElement)
Item[String]

取得或設定此一組態項目的屬性或子項目。

(繼承來源 ConfigurationElement)
LockAllAttributesExcept

取得已鎖定屬性的集合。

(繼承來源 ConfigurationElement)
LockAllElementsExcept

取得已鎖定項目的集合。

(繼承來源 ConfigurationElement)
LockAttributes

取得已鎖定屬性的集合。

(繼承來源 ConfigurationElement)
LockElements

取得已鎖定項目的集合。

(繼承來源 ConfigurationElement)
LockItem

取得或設定值,指出此項目是否已被鎖定。

(繼承來源 ConfigurationElement)
Properties

取得屬性的集合。

(繼承來源 ConfigurationElement)
Timeouts

取得用於 HttpListener 物件的預設逾時項目。

UnescapeRequestUrl

取得值,這個值會指出 HttpListener 使用原始未逸出 URI,而非轉換的 URI。

方法

DeserializeElement(XmlReader, Boolean)

從組態檔讀取 XML。

(繼承來源 ConfigurationElement)
Equals(Object)

將目前的 ConfigurationElement 執行個體與指定的物件相比較。

(繼承來源 ConfigurationElement)
GetHashCode()

取得表示目前 ConfigurationElement 執行個體的唯一值。

(繼承來源 ConfigurationElement)
GetTransformedAssemblyString(String)

傳回指定之組件名稱的轉換版本。

(繼承來源 ConfigurationElement)
GetTransformedTypeString(String)

傳回指定之型別名稱的轉換版本。

(繼承來源 ConfigurationElement)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
Init()

ConfigurationElement 物件設定為它的初始狀態。

(繼承來源 ConfigurationElement)
InitializeDefault()

用來初始化 ConfigurationElement 物件的預設值集。

(繼承來源 ConfigurationElement)
IsModified()

在衍生類別中進行實作時,指出這個組態項目自上次儲存或載入後是否已修改。

(繼承來源 ConfigurationElement)
IsReadOnly()

取得值,這個值表示 ConfigurationElement 物件是否唯讀。

(繼承來源 ConfigurationElement)
ListErrors(IList)

將這個 ConfigurationElement 物件中和所有子項目中的無效屬性錯誤加入傳遞的清單。

(繼承來源 ConfigurationElement)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
OnDeserializeUnrecognizedAttribute(String, String)

取得值,指出在還原序列化程序中是否遇到未知的屬性 (Attribute)。

(繼承來源 ConfigurationElement)
OnDeserializeUnrecognizedElement(String, XmlReader)

取得值,指出在還原序列化程序中是否遇到未知的項目。

(繼承來源 ConfigurationElement)
OnRequiredPropertyNotFound(String)

在找不到必要的屬性時擲回例外狀況 (Exception)。

(繼承來源 ConfigurationElement)
PostDeserialize()

還原序列化之後呼叫。

(繼承來源 ConfigurationElement)
PreSerialize(XmlWriter)

序列化之前呼叫。

(繼承來源 ConfigurationElement)
Reset(ConfigurationElement)

重設 ConfigurationElement 物件的內部狀態,包括鎖定和屬性的集合。

(繼承來源 ConfigurationElement)
ResetModified()

在衍生類別中實作時,將 IsModified() 方法的值重設為 false

(繼承來源 ConfigurationElement)
SerializeElement(XmlWriter, Boolean)

在衍生類別中實作時,將此組態項目的內容寫入組態檔中。

(繼承來源 ConfigurationElement)
SerializeToXmlElement(XmlWriter, String)

在衍生類別中實作時,將此組態項目的外部標記寫入組態檔中。

(繼承來源 ConfigurationElement)
SetPropertyValue(ConfigurationProperty, Object, Boolean)

將屬性設定為指定的值。

(繼承來源 ConfigurationElement)
SetReadOnly()

設定 IsReadOnly() 物件和所有子項目的 ConfigurationElement 屬性。

(繼承來源 ConfigurationElement)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
Unmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode)

修改 ConfigurationElement 物件,以移除不應該儲存的所有值。

(繼承來源 ConfigurationElement)

適用於

另請參閱