Funkce požadavků v ASP.NET Core

Autor: Steve Smith

Rozhraní HttpContext API, které aplikace a middleware používají ke zpracování požadavků, má pod ní vrstvu abstrakce označovanou jako rozhraní funkcí. Každé rozhraní funkcí poskytuje podrobnou podmnožinu funkcí vystavených HttpContext. Tato rozhraní lze přidat, upravit, zabalit, nahradit nebo dokonce odebrat serverem nebo middlewarem, protože požadavek je zpracován, aniž by bylo nutné znovu implementovat celý HttpContext. Při testování se také dají použít k napodobení funkcí.

Kolekce funkcí

Vlastnost FeaturesHttpContext poskytuje přístup k kolekci rozhraní funkcí pro aktuální požadavek. Vzhledem k tomu, že kolekce funkcí je proměnlivá i v kontextu požadavku, můžete middleware použít k úpravě kolekce a přidání podpory dalších funkcí. Některé pokročilé funkce jsou k dispozici pouze přístupem k přidruženému rozhraní prostřednictvím kolekce funkcí.

Rozhraní funkcí

ASP.NET Core definuje řadu běžných rozhraní Microsoft.AspNetCore.Http.Featuresfunkcí HTTP, která jsou sdílená různými servery a middlewarem, aby identifikovala funkce, které podporují. Servery a middleware mohou také poskytovat vlastní rozhraní s dalšími funkcemi.

Většina rozhraní funkcí poskytuje volitelné, light-up funkce a jejich přidružená HttpContext rozhraní API poskytují výchozí hodnoty, pokud tato funkce není k dispozici. V následujícím obsahu je uvedeno několik rozhraní podle potřeby, protože poskytují základní funkce požadavků a odpovědí a musí být implementovány, aby bylo možné požadavek zpracovat.

Následující rozhraní funkcí pocházejí z Microsoft.AspNetCore.Http.Features:

IHttpRequestFeature: Definuje strukturu požadavku HTTP, včetně protokolu, cesty, řetězce dotazu, hlaviček a textu. Tato funkce se vyžaduje ke zpracování požadavků.

IHttpResponseFeature: Definuje strukturu odpovědi HTTP, včetně stavového kódu, hlaviček a textu odpovědi. Tato funkce se vyžaduje ke zpracování požadavků.

IHttpResponseBodyFeature: Definuje různé způsoby zápisu textu odpovědi pomocí , Streama PipeWriter, nebo souboru. Tato funkce se vyžaduje ke zpracování požadavků. To nahrazuje IHttpResponseFeature.Body a IHttpSendFileFeature.

IHttpAuthenticationFeature: Obsahuje aktuálně přidruženou ClaimsPrincipal žádost.

IFormFeature: Slouží k analýze a ukládání příchozích odeslání http a vícedílných formulářů do mezipaměti.

IHttpBodyControlFeature: Slouží k řízení toho, jestli jsou pro subjekt žádosti nebo odpovědi povolené synchronní vstupně-výstupní operace.

IHttpActivityFeature: Slouží k přidání Activity informací pro diagnostické naslouchací procesy.

IHttpBufferingFeature: Definuje metody pro zakázání ukládání požadavků do vyrovnávací paměti nebo odpovědí.

IHttpConnectionFeature: Definuje vlastnosti pro ID připojení a místní a vzdálené adresy a porty.

IHttpMaxRequestBodySizeFeature: Určuje maximální povolenou velikost textu požadavku pro aktuální požadavek.

IHttpRequestBodyDetectionFeature: Označuje, jestli požadavek může obsahovat text.

IHttpRequestIdentifierFeature: Přidá vlastnost, která se dá implementovat k jednoznačné identifikaci požadavků.

IHttpRequestLifetimeFeature: Definuje podporu přerušení připojení nebo zjištění, jestli byl požadavek předčasně ukončen, například odpojením klienta.

IHttpRequestTrailersFeature: Poskytuje přístup k hlavičce žádosti o přívěs, pokud existuje.

IHttpResetFeature: Slouží k odesílání zpráv o resetování pro protokoly, které je podporují, například HTTP/2 nebo HTTP/3.

IHttpResponseTrailersFeature: Umožňuje aplikaci poskytnout hlavičky přívěsu odpovědi, pokud je podporována.

IHttpSendFileFeature: Definuje metodu pro asynchronní odesílání souborů.

IHttpUpgradeFeature: Definuje podporu pro upgrady HTTP, které klientovi umožňují určit, které další protokoly chcete použít, pokud chce server přepnout protokoly.

IHttpWebSocketFeature: Definuje rozhraní API pro podporu webových soketů.

IHttpsCompressionFeature: Určuje, jestli se má komprese odpovědí použít přes připojení HTTPS.

IItemsFeature: Ukládá kolekci Items pro jednotlivé požadavky ve stavu aplikace.

IQueryFeature: Analyzuje a ukládá řetězec dotazu do mezipaměti.

IRequestBodyPipeFeature: Představuje tělo požadavku jako .PipeReader

IRequestCookiesFeature: Analyzuje a ukládá do mezipaměti hodnoty hlavičky požadavku Cookie .

IResponseCookiesFeature: Určuje způsob použití odpovědí cookiena hlavičku Set-Cookie .

IServerVariablesFeature: Tato funkce poskytuje přístup k proměnným serveru požadavků, jako jsou proměnné poskytované službou IIS.

IServiceProvidersFeature: Poskytuje přístup ke službám s vymezeným IServiceProvider požadavkem.

ISessionFeature: Definuje ISessionFactory a ISession abstrakce pro podporu uživatelských relací. ISessionFeature je implementována pomocí SessionMiddleware relace (viz relace v ASP.NET Core).

ITlsConnectionFeature: Definuje rozhraní API pro načítání klientských certifikátů.

ITlsTokenBindingFeature: Definuje metody pro práci s parametry vazby tokenu TLS.

ITrackingConsentFeature: Používá se k dotazování, udělení a odvolání souhlasu uživatele ohledně ukládání informací o uživateli souvisejících s aktivitami a funkcemi webu.

Další prostředky