Żądanie funkcji na platformie ASP.NET Core
Autor: Steve Smith
Interfejs HttpContext
API używany przez aplikacje i oprogramowanie pośredniczące do przetwarzania żądań ma pod nim warstwę abstrakcji nazywaną interfejsami funkcji. Każdy interfejs funkcji udostępnia szczegółowy podzbiór funkcji udostępnianych przez HttpContext
program . Te interfejsy można dodawać, modyfikować, opakować, zastępować, a nawet usuwać przez serwer lub oprogramowanie pośredniczące, ponieważ żądanie jest przetwarzane bez konieczności ponownego implementowania całego HttpContext
elementu . Mogą również służyć do pozorowania funkcjonalności podczas testowania.
Kolekcje funkcji
Właściwość FeaturesHttpContext
zapewnia dostęp do kolekcji interfejsów funkcji dla bieżącego żądania. Ponieważ kolekcja funkcji jest modyfikowalna nawet w kontekście żądania, oprogramowanie pośredniczące może służyć do modyfikowania kolekcji i dodawania obsługi dodatkowych funkcji. Niektóre zaawansowane funkcje są dostępne tylko przez uzyskanie dostępu do skojarzonego interfejsu za pośrednictwem kolekcji funkcji.
Interfejsy funkcji
ASP.NET Core definiuje szereg typowych interfejsów funkcji HTTP w programie Microsoft.AspNetCore.Http.Features, które są współużytkowane przez różne serwery i oprogramowanie pośredniczące w celu zidentyfikowania funkcji, które obsługują. Serwery i oprogramowanie pośredniczące mogą również udostępniać własne interfejsy z dodatkowymi funkcjami.
Większość interfejsów funkcji zapewnia opcjonalną, rozświetlaną funkcjonalność, a skojarzone z nimi HttpContext
interfejsy API udostępniają wartości domyślne, jeśli funkcja nie jest obecna. Kilka interfejsów jest wskazanych w następującej zawartości zgodnie z wymaganiami, ponieważ zapewniają podstawowe funkcje żądania i odpowiedzi oraz muszą być zaimplementowane w celu przetworzenia żądania.
Następujące interfejsy funkcji pochodzą z programu Microsoft.AspNetCore.Http.Features:
IHttpRequestFeature: definiuje strukturę żądania HTTP, w tym protokół, ścieżkę, ciąg zapytania, nagłówki i treść. Ta funkcja jest wymagana do przetwarzania żądań.
IHttpResponseFeature: definiuje strukturę odpowiedzi HTTP, w tym kod stanu, nagłówki i treść odpowiedzi. Ta funkcja jest wymagana do przetwarzania żądań.
IHttpResponseBodyFeature: definiuje różne sposoby zapisywania treści odpowiedzi przy użyciu Stream
pliku , lub PipeWriter
pliku. Ta funkcja jest wymagana do przetwarzania żądań. Spowoduje to zastąpienie IHttpResponseFeature.Body
elementu i IHttpSendFileFeature
.
IHttpAuthenticationFeature: przechowuje ClaimsPrincipal aktualnie skojarzone z żądaniem.
IFormFeature: służy do analizowania i buforowania przychodzących przesyłania formularzy HTTP i wieloczęściowych.
IHttpBodyControlFeature: służy do kontrolowania, czy operacje we/wy synchroniczne są dozwolone dla treści żądania lub odpowiedzi.
IHttpActivityFeature
: służy do dodawania Activity
informacji dla odbiorników diagnostycznych.
IHttpBufferingFeature: definiuje metody wyłączania buforowania żądań i/lub odpowiedzi.
IHttpConnectionFeature: definiuje właściwości identyfikatora połączenia oraz adresów lokalnych i zdalnych oraz portów.
IHttpMaxRequestBodySizeFeature: określa maksymalny dozwolony rozmiar treści żądania dla bieżącego żądania.
IHttpRequestBodyDetectionFeature
: wskazuje, czy żądanie może mieć treść.
IHttpRequestIdentifierFeature: dodaje właściwość, którą można zaimplementować w celu unikatowego identyfikowania żądań.
IHttpRequestLifetimeFeature: definiuje obsługę przerywania połączeń lub wykrywania, czy żądanie zostało przerwane przedwcześnie, na przykład przez rozłączenie klienta.
IHttpRequestTrailersFeature: zapewnia dostęp do nagłówków zwiastuna żądania, jeśli istnieje.
IHttpResetFeature: służy do wysyłania komunikatów resetowania dla protokołów obsługujących je, takich jak HTTP/2 lub HTTP/3.
IHttpResponseTrailersFeature: umożliwia aplikacji udostępnianie nagłówków zwiastuna odpowiedzi, jeśli są obsługiwane.
IHttpSendFileFeature: definiuje metodę wysyłania plików asynchronicznie.
IHttpUpgradeFeature: definiuje obsługę uaktualnień HTTP, które umożliwiają klientowi określenie, które dodatkowe protokoły mają być używane, jeśli serwer chce przełączyć protokoły.
IHttpWebSocketFeature: definiuje interfejs API do obsługi gniazd internetowych.
IHttpsCompressionFeature: określa, czy kompresja odpowiedzi powinna być używana za pośrednictwem połączeń HTTPS.
IItemsFeature: przechowuje Items kolekcję dla stanu aplikacji żądania.
IQueryFeature: analizuje i buforuje ciąg zapytania.
IRequestBodyPipeFeature: reprezentuje treść żądania jako PipeReader.
IRequestCookiesFeature: analizuje i buforuje wartości nagłówka żądania Cookie
.
IResponseCookiesFeature: określa sposób stosowania odpowiedzi cookiedo nagłówka Set-Cookie
.
IServerVariablesFeature: Ta funkcja zapewnia dostęp do zmiennych serwera żądań, takich jak te udostępniane przez usługi IIS.
IServiceProvidersFeature: zapewnia dostęp do elementu IServiceProvider z usługami żądań o określonym zakresie.
ISessionFeature: Definiuje ISessionFactory
i ISession abstrakcji na potrzeby obsługi sesji użytkowników. ISessionFeature
program jest implementowany przez program (zobacz Sesja SessionMiddleware w ASP.NET Core).
ITlsConnectionFeature: definiuje interfejs API do pobierania certyfikatów klienta.
ITlsTokenBindingFeature: definiuje metody pracy z parametrami powiązania tokenu TLS.
ITrackingConsentFeature: służy do wykonywania zapytań, udzielania i wycofywania zgody użytkownika w odniesieniu do przechowywania informacji o użytkowniku związanych z działaniem i funkcjonalnością witryny.