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 是 HTTP 要求之要求行中提供的 System.Uri

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 字元,以及 Unicode 字元 (使用 %uXXXX 格式的 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)

適用於

另請參閱