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 、パーセントでエンコードされた値が変換され、その他の正規化手順が実行される変換された URI ではなく、未加工のエスケープされていない URI を使用するかどうかを HttpListener 示します。
HttpListener インスタンスでは、http.sys
サービスを介して要求を受け取ると、http.sys
によって提供される URI 文字列のインスタンスを作成し、HttpListenerRequest.Url プロパティとして公開します。
http.sys
サービスでは、次の 2 つの要求 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
では、プロセスを変更するために次の 2 つのレジストリ キーを使用します。
レジストリ キー | 既定値 | 説明 |
---|---|---|
EnableNonUTF8 | 1 | 0 の場合、http.sys は UTF-8 でエンコードされた URL のみを受け入れます。0 以外の場合、 http.sys は要求の中で ANSI または DBCS でエンコードされた URL も受け入れます。 |
FavorUTF8 | 1 | 0 以外の場合、http.sys では常に URL を UTF-8 としてデコードしようとします。変換に失敗し、EnableNonUTF8 が 0 以外の場合は、ANSI または DBCS としてデコードしようとします。0 (および EnableNonUTF8 が 0 以外) の場合、 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 クラスの新しいインスタンスを初期化します。 |
プロパティ
メソッド
適用対象
こちらもご覧ください
.NET