Anforderungsfeatures in ASP.NET CoreRequest Features in ASP.NET Core

Von Steve SmithBy Steve Smith

Ausführliche Informationen zur Webserverimplementierung, die mit HTTP-Anforderungen und -antworten in Verbindung stehen, werden in Schnittstellen definiert.Web server implementation details related to HTTP requests and responses are defined in interfaces. Diese Schnittstellen werden von Serverimplementierungen und Middleware verwendet, um die Hostingpipeline der App zu erstellen und anzupassen.These interfaces are used by server implementations and middleware to create and modify the application's hosting pipeline.

FeatureschnittstellenFeature interfaces

ASP.NET Core definiert einige HTTP-Featureschnittstellen in Microsoft.AspNetCore.Http.Features, die von Servern verwendet werden, um unterstützte Features zu erkennen.ASP.NET Core defines a number of HTTP feature interfaces in Microsoft.AspNetCore.Http.Features which are used by servers to identify the features they support. Die folgenden Featureschnittstellen verarbeiten Anforderungen und geben Antworten zurück:The following feature interfaces handle requests and return responses:

IHttpRequestFeature definiert die Struktur einer HTTP-Anforderung, einschließlich Protokoll, Pfad, Abfragezeichenfolge, Header und Text.IHttpRequestFeature Defines the structure of an HTTP request, including the protocol, path, query string, headers, and body.

IHttpResponseFeature definiert die Struktur einer HTTP-Antwort, einschließlich Statuscode, Header und Antworttext.IHttpResponseFeature Defines the structure of an HTTP response, including the status code, headers, and body of the response.

IHttpAuthenticationFeature definiert die Unterstützung für das Erkennen von Benutzern auf Grundlage eines ClaimsPrincipal und für das Festlegen eines Authentifizierungshandlers.IHttpAuthenticationFeature Defines support for identifying users based on a ClaimsPrincipal and specifying an authentication handler.

IHttpUpgradeFeature definiert Unterstützung für HTTP-Upgrades, die es dem Client ermöglichen, festzulegen, welche zusätzlichen Protokolle er verwenden möchte, wenn der Server Protokolle wechseln möchte.IHttpUpgradeFeature Defines support for HTTP Upgrades, which allow the client to specify which additional protocols it would like to use if the server wishes to switch protocols.

IHttpBufferingFeature definiert Methoden zum Deaktivieren des Pufferns von Anforderungen und/oder Antworten.IHttpBufferingFeature Defines methods for disabling buffering of requests and/or responses.

IHttpConnectionFeature definiert Eigenschaften für lokale und Remote-Adressen und Ports.IHttpConnectionFeature Defines properties for local and remote addresses and ports.

IHttpRequestLifetimeFeature definiert Unterstützung für das Abbrechen von Verbindungen oder das Erkennen einer verfrühten Beendung einer Anforderung, z.B. durch eine abgebrochene Verbindung zum Client.IHttpRequestLifetimeFeature Defines support for aborting connections, or detecting if a request has been terminated prematurely, such as by a client disconnect.

IHttpSendFileFeature definiert eine Methode zum asynchronen Senden von Dateien.IHttpSendFileFeature Defines a method for sending files asynchronously.

IHttpWebSocketFeature definiert eine API zur Unterstützung von Websockets.IHttpWebSocketFeature Defines an API for supporting web sockets.

IHttpRequestIdentifierFeature fügt eine Eigenschaft hinzu, die implementiert werden kann, um eine Anforderung eindeutig identifizieren zu können.IHttpRequestIdentifierFeature Adds a property that can be implemented to uniquely identify requests.

ISessionFeature definiert die Abstraktionen ISessionFactory und ISession zur Unterstützung von Benutzersitzungen.ISessionFeature Defines ISessionFactory and ISession abstractions for supporting user sessions.

ITlsConnectionFeature definiert eine API zum Abrufen von Clientzertifikaten.ITlsConnectionFeature Defines an API for retrieving client certificates.

ITlsTokenBindingFeature definiert Methoden zum Arbeiten mit TLS-Tokenbindungsparametern.ITlsTokenBindingFeature Defines methods for working with TLS token binding parameters.

Hinweis

ISessionFeature ist kein Serverfeature, wird aber von der SessionMiddleware implementiert. Weitere Informationen finden Sie im Artikel zur Verwaltung des Anwendungszustandes.ISessionFeature isn't a server feature, but is implemented by the SessionMiddleware (see Managing Application State).

FeaturesammlungFeature collections

Die Features-Eigenschaft von HttpContext bietet eine Schnittstelle zum Abrufen und Festlegen der verfügbaren HTTP-Features für die aktuelle Anforderung.The Features property of HttpContext provides an interface for getting and setting the available HTTP features for the current request. Da die Featuresammlung auch im Kontext einer Anforderung änderbar ist, kann Middleware verwendet werden, um die Sammlung zu modifizieren und Unterstützung für zusätzliche Features hinzuzufügen.Since the feature collection is mutable even within the context of a request, middleware can be used to modify the collection and add support for additional features.

Middleware- und AnforderungsfeaturesMiddleware and request features

Obwohl Server für das Erstellen von Featuresammlungen zuständig sind, kann Middleware Features zu dieser hinzufügen und darin befindliche Features nutzen.While servers are responsible for creating the feature collection, middleware can both add to this collection and consume features from the collection. Die StaticFileMiddleware greift z.B. auf das IHttpSendFileFeature-Feature zu.For example, the StaticFileMiddleware accesses the IHttpSendFileFeature feature. Wenn das Feature vorhanden ist, wird es verwendet, um die angeforderte statische Datei von deren physischem Pfad aus zu senden.If the feature exists, it's used to send the requested static file from its physical path. Andernfalls wird eine alternative, langsamere Methode zum Senden der Datei verwendet.Otherwise, a slower alternative method is used to send the file. Wenn dies verfügbar ist, ermöglicht das IHttpSendFileFeature dem Betriebssystem das Öffnen der Datei und das Erstellen einer direkten Kopie im Kernelmodus auf der Netzwerkkarte.When available, the IHttpSendFileFeature allows the operating system to open the file and perform a direct kernel mode copy to the network card.

Zusätzlich kann Middleware Features zur Featuresammlung des Servers hinzufügen.Additionally, middleware can add to the feature collection established by the server. Vorhandene Features können von Middleware ersetzt werden, sodass die Middleware die Funktionalität des Servers beeinflussen kann.Existing features can even be replaced by middleware, allowing the middleware to augment the functionality of the server. Features, die der Auflistung hinzugefügt wurden, stehen umgehend auch anderer Middleware oder der zugrunde liegenden Anwendung selbst zu einem späteren Zeitpunkt in der Anforderungspipeline zur Verfügung.Features added to the collection are available immediately to other middleware or the underlying application itself later in the request pipeline.

Anhand der Kombination benutzerdefinierter Serverimplementierungen und spezifischer Middlewareverbesserungen kann der genaue Satz von Features, den eine Anwendung erfordert, erstellt werden.By combining custom server implementations and specific middleware enhancements, the precise set of features an application requires can be constructed. So können fehlende Features hinzugefügt werden, ohne dass der Server verändert werden muss. Zudem wird sichergestellt, dass nur so viele Features wie unbedingt nötig verfügbar gemacht werden, sodass die Angriffsfläche auf einem Minimum gehalten und die Leistung verbessert wird.This allows missing features to be added without requiring a change in server, and ensures only the minimal amount of features are exposed, thus limiting attack surface area and improving performance.

ZusammenfassungSummary

Featureschnittstellen definieren spezifische HTTP-Features, die von einer angegebenen Anforderung möglicherweise unterstützt werden.Feature interfaces define specific HTTP features that a given request may support. Server definieren Featuresammlungen und den ersten Satz von Features, die von diesem Server unterstützt werden. Middleware kann jedoch verwendet werden, um diese Features zu verbessern.Servers define collections of features, and the initial set of features supported by that server, but middleware can be used to enhance these features.

Zusätzliche RessourcenAdditional resources