Żą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 HttpContextprogram . 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 HttpContextelementu . 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 Streampliku , lub PipeWriterpliku. 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. ISessionFeatureprogram 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.

Dodatkowe zasoby