ASP.NET Core での要求機能

作成者: Steve Smith

アプリケーションとミドルウェアで要求を処理するために使用する HttpContext API には、"機能インターフェイス" と呼ばれる抽象化レイヤーがその下にあります。 各機能インターフェイスには、HttpContext によってよって公開される機能の詳細なサブセットが用意されています。 これらのインターフェイスは、HttpContext 全体を再実装しなくても、要求の処理に応じて、サーバーまたはミドルウェアで追加、変更、ラップ、置換、または削除することができます。 また、テスト時に機能をモックするためにも使用できます。

機能のコレクション

HttpContextFeatures プロパティによって、現在の要求の機能インターフェイスのコレクションへのアクセスが提供されます。 機能のコレクションは要求のコンテキスト内でも変更可能であるため、コレクションの変更と、その他の機能のサポートの追加にはミドルウェアを使用できます。 一部の高度な機能は、関連付けられているインターフェイスに機能コレクションを通じてアクセスすることによってのみ使用できます。

機能インターフェイス

ASP.NET Core では、多くの一般的な HTTP 機能インターフェイスが Microsoft.AspNetCore.Http.Features で定義されています。これは、サポートされている機能を識別するために、さまざまなサーバーとミドルウェアによって共有されます。 サーバーとミドルウェアには、追加の機能を備えた独自のインターフェイスが用意されている場合もあります。

ほとんどの機能インターフェイスには、省略可能なライトアップ機能が備わっており、その機能が存在しない場合は、それらに関連付けられた HttpContext API によって既定値が提供されます。 いくつかのインターフェイスは必要に応じて次のコンテンツで示されます。これらには要求と応答のコア機能が備わっており、要求を処理するために実装する必要があるためです。

次の機能インターフェイスは Microsoft.AspNetCore.Http.Features からのものです。

IHttpRequestFeature: プロトコル、パス、クエリ文字列、ヘッダー、本文などの HTTP 要求の構造を定義します。 この機能は、要求を処理するために必要です。

IHttpResponseFeature: 状態コード、ヘッダー、応答の本文などの HTTP 応答の構造を定義します。 この機能は、要求を処理するために必要です。

IHttpResponseBodyFeature: StreamPipeWriter、またはファイルのいずれかを使用して、応答本文を書き出すためのさまざまな方法を定義します。 この機能は、要求を処理するために必要です。 これにより、IHttpResponseFeature.BodyIHttpSendFileFeature が置き換えられます。

IHttpAuthenticationFeature: 現在要求に関連付けられている ClaimsPrincipal を保持します。

IFormFeature: 受信 HTTP およびマルチパート フォーム送信を解析およびキャッシュするために使用します。

IHttpBodyControlFeature: 要求または応答の本文に対して同期 IO 操作を許可するかどうかを制御するために使用します。

IHttpActivityFeature: 診断リスナーの Activity 情報を追加するために使用します。

IHttpBufferingFeature: 要求や応答のバッファーを無効化する方法を定義します。

IHttpConnectionFeature: 接続 ID と、ローカルおよびリモートのアドレスとポートのプロパティを定義します。

IHttpMaxRequestBodySizeFeature: 現在の要求に対して許可される要求本文の最大サイズを制御します。

IHttpRequestBodyDetectionFeature: 要求に本文を含めることができるかどうかを示します。

IHttpRequestIdentifierFeature: 要求を一意に識別するために実装できるプロパティを追加します。

IHttpRequestLifetimeFeature: 接続を中止したり、クライアントの切断などによって要求が途中で中止されたかどうかを検出したりするためのサポートを定義します。

IHttpRequestTrailersFeature: 存在する場合、要求トレーラー ヘッダーへのアクセスを提供します。

IHttpResetFeature: HTTP/2 や HTTP/3 などをサポートするプロトコルのリセット メッセージを送信するために使用します。

IHttpResponseTrailersFeature: サポートされている場合、アプリケーションが応答トレーラー ヘッダーを提供できるようにします。

IHttpSendFileFeature: ファイルを非同期的に送信するためのメソッドを定義します。

IHttpUpgradeFeature: HTTP アップグレードのサポートを定義します。これにより、サーバーでプロトコルを切り替える必要がある場合に、クライアントで使用したい追加のプロトコルを指定することが可能になります。

IHttpWebSocketFeature: Web ソケットをサポートする API を定義します。

IHttpsCompressionFeature: HTTPS 接続に対して応答圧縮を使用する必要があるかどうかを制御します。

IItemsFeature: 要求ごとのアプリケーション状態の Items コレクションを格納します。

IQueryFeature: クエリ文字列を解析してキャッシュします。

IRequestBodyPipeFeature: 要求本文を PipeReader として表します。

IRequestCookiesFeature: 要求 Cookie ヘッダー値を解析してキャッシュします。

IResponseCookiesFeature: Set-Cookie ヘッダーに応答 cookie を適用する方法を制御します。

IServerVariablesFeature: この機能により、IIS によって提供されるような要求サーバー変数にアクセスできます。

IServiceProvidersFeature: スコープ付き要求サービスで IServiceProvider へのアクセスを提供します。

ISessionFeature: ユーザー セッションをサポートする ISessionFactoryISession の抽象化を定義します。 ISessionFeatureSessionMiddleware によって実装されます (「ASP.NET Core でのセッション」を参照してください)。

ITlsConnectionFeature: クライアント証明書を取得する API を定義します。

ITlsTokenBindingFeature: TLS トークンのバインド パラメーターを使用するメソッドを定義します。

ITrackingConsentFeature: サイトのアクティビティと機能に関連するユーザー情報の保存に関するユーザーの同意を照会、許可、および取り消すために使用します。

その他のリソース