ASP.NET Core 中的要求功能
作者:Steve Smith
應用程式與中介軟體用來處理要求的 HttpContext
API 在其下方有一個抽象層,稱為「功能介面」。 每個功能介面都會提供 HttpContext
所公開功能的細微子集。 處理要求時,伺服器或中介軟體可以新增、修改、包裝、取代或甚至移除這些介面,而不必重新實作整個 HttpContext
。 這些介面也可在測試時用於模擬功能。
功能集合
HttpContext
的 Features 屬性可讓您存取目前要求的功能介面集合。 由於功能集合即使在要求內容中都是可變動的,因此可以使用中介軟體來修改該集合,並新增其他功能的支援。 只有透過功能集合存取相關聯的介面,才能使用某些進階功能。
功能介面
ASP.NET Core 會在 Microsoft.AspNetCore.Http.Features 中定義一些通用的 HTTP 功能介面,這些介面是由各種伺服器和中介軟體共用,以識別其支援的功能。 伺服器和中介軟體也可以提供自己的介面,並提供額外的功能。
大部分的功能介面都會提供選擇性、亮起的功能,而其相關聯的 HttpContext
API 會在此功能不存在時提供預設值。 有些介面會在下列內容中視需要指出,因為其提供核心要求和回應功能,而且必須實作才能處理要求。
下列功能介面來自 Microsoft.AspNetCore.Http.Features:
IHttpRequestFeature:定義 HTTP 要求的結構,包括通訊協定、路徑、查詢字串、標頭和本文。 需要這項功能才能處理要求。
IHttpResponseFeature:定義 HTTP 回應的結構,包括狀態碼、標頭和回應本文。 需要這項功能才能處理要求。
IHttpResponseBodyFeature:使用 Stream
、PipeWriter
或檔案,定義寫出回應本文的不同方式。 需要這項功能才能處理要求。 這取代了 IHttpResponseFeature.Body
和 IHttpSendFileFeature
。
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:定義支援 WebSockets 的 API。
IHttpsCompressionFeature:控制是否應該透過 HTTPS 連線使用回應壓縮。
IItemsFeature:針對每個要求應用程式狀態儲存 Items 集合。
IQueryFeature:剖析和快取查詢字串。
IRequestBodyPipeFeature:將要求本文表示為 PipeReader。
IRequestCookiesFeature:剖析和快取要求 Cookie
標頭值。
IResponseCookiesFeature:控制如何將回應 Cookie 套用至 Set-Cookie
標頭。
IServerVariablesFeature:這項功能可讓您存取要求伺服器變數,例如 IIS 所提供的變數。
IServiceProvidersFeature:可供存取具有限範圍要求服務的 IServiceProvider。
ISessionFeature:定義用來支援使用者工作階段的 ISessionFactory
和 ISession 抽象概念。 ISessionFeature
是由 SessionMiddleware 實作 (請參閱 ASP.NET Core 中的工作階段)。
ITlsConnectionFeature:定義用來擷取用戶端憑證的 API。
ITlsTokenBindingFeature:定義使用 TLS 權杖繫結參數的方法。
ITrackingConsentFeature:用於就網站活動和功能相關使用者資訊的儲存,查詢、授與和撤銷使用者同意。