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 Features HttpContext
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í , Stream
a 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 webSocket.
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, jak se na hlavičku Set-Cookie
použijí soubory cookie odpovědí.
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.