Partilhar via


Funcionalidades de Pedido no ASP.NET Core

Por Steve Smith

A HttpContext API que as aplicações e middleware usam para processar pedidos tem uma camada de abstração por baixo chamada interfaces de funcionalidades. Cada interface de funcionalidades fornece um subconjunto granular da funcionalidade exposta por HttpContext. Estas interfaces podem ser adicionadas, modificadas, encapsuladas, substituídas ou até removidas pelo servidor ou middleware à medida que o pedido é processado, sem necessidade de reimplementar todo HttpContexto arquivo . Também podem ser usados para simular funcionalidades durante testes.

Coleções de destaque

A Features propriedade de HttpContext fornece acesso à coleção de interfaces de funcionalidades para o pedido atual. Como a coleção de funcionalidades é mutável mesmo no contexto de um pedido, o middleware pode ser usado para modificar a coleção e adicionar suporte para funcionalidades adicionais. Algumas funcionalidades avançadas só estão disponíveis acedendo à interface associada através da coleção de funcionalidades.

Interfaces de funcionalidades

ASP.NET Core define várias interfaces de funcionalidades HTTP comuns em Microsoft.AspNetCore.Http.Features, que são partilhadas por vários servidores e middleware para identificar as funcionalidades que suportam. Servidores e middleware podem também fornecer as suas próprias interfaces com funcionalidades adicionais.

A maioria das interfaces de funcionalidades oferece funcionalidades opcionais e iluminadas, e as APIs associadas HttpContext fornecem os predefinidos caso a funcionalidade não esteja presente. Algumas interfaces são indicadas no conteúdo seguinte como necessárias porque fornecem funcionalidades essenciais de pedido e resposta e devem ser implementadas para processar o pedido.

As seguintes interfaces de funcionalidades provêm de Microsoft.AspNetCore.Http.Features:

IHttpRequestFeature: Define a estrutura de um pedido HTTP, incluindo o protocolo, caminho, cadeia de consulta, cabeçalhos e corpo. Esta funcionalidade é necessária para processar pedidos.

IHttpResponseFeature: Define a estrutura de uma resposta HTTP, incluindo o código de estado, cabeçalhos e corpo da resposta. Esta funcionalidade é necessária para processar pedidos.

IHttpResponseBodyFeature: Define diferentes formas de escrever o corpo da resposta, usando um Stream, um PipeWriter, ou um ficheiro. Esta funcionalidade é necessária para processar pedidos. Isto substitui IHttpResponseFeature.Body e IHttpSendFileFeature.

IHttpAuthenticationFeature: Detém o ClaimsPrincipal atualmente associado ao pedido.

IFormFeature: Usado para analisar e armazenar em cache submissões HTTP e formulários multipartes.

IHttpBodyControlFeature: Usado para controlar se operações de IO síncronas são permitidas para os corpos de pedido ou resposta.

IHttpActivityFeature: Usado para adicionar Activity informação para ouvintes de diagnóstico.

IHttpBufferingFeature: Define métodos para desativar o buffering de pedidos e/ou respostas.

IHttpConnectionFeature: Define propriedades para o id de ligação e para endereços e portas locais e remotos.

IHttpMaxRequestBodySizeFeature: Controla o tamanho máximo permitido do corpo do pedido para o pedido atual.

IHttpRequestBodyDetectionFeature: Indica se o pedido pode ter um corpo.

IHttpRequestIdentifierFeature: Adiciona uma propriedade que pode ser implementada para identificar de forma única os pedidos.

IHttpRequestLifetimeFeature: Define suporte para abortar ligações ou detetar se um pedido foi terminado prematuramente, como por causa de uma desconexão do cliente.

IHttpRequestTrailersFeature: Fornece acesso aos cabeçalhos do trailer de pedido, se existirem.

IHttpResetFeature: Usado para enviar mensagens de reset para protocolos que os suportam, como HTTP/2 ou HTTP/3.

IHttpResponseTrailersFeature: Permite que a aplicação forneça cabeçalhos de trailer de resposta, se for suportado.

IHttpSendFileFeature: Define um método para enviar ficheiros de forma assíncrona.

IHttpUpgradeFeature: Define suporte para Atualizações HTTP, que permitem ao cliente especificar quais os protocolos adicionais que deseja usar caso o servidor deseje mudar de protocolo.

IHttpWebSocketFeature: Define uma API para suportar WebSockets.

IHttpsCompressionFeature: Controla se a compressão de resposta deve ser usada através de ligações HTTPS.

IItemsFeature: Armazena a coleção Items para o estado da aplicação de cada pedido.

IQueryFeature: Analisa e armazena em cache a cadeia de consulta.

IRequestBodyPipeFeature: Representa o corpo da requisição como um PipeReader.

IRequestCookiesFeature: Analisa e armazena em cache os valores do cabeçalho do pedido Cookie .

IResponseCookiesFeature: Controla como os cookies de resposta são aplicados ao Set-Cookie cabeçalho.

IServerVariablesFeature: Esta funcionalidade proporciona acesso a variáveis do servidor de pedidos como as fornecidas pelo IIS.

IServiceProvidersFeature: Fornece acesso a serviços IServiceProvider de pedido com âmbito específico.

ISessionFeature: Define ISessionFactory e ISession abstrações para suportar sessões de utilizador. ISessionFeature é implementado pelo SessionMiddleware (ver Session em ASP.NET Core).

ITlsConnectionFeature: Define uma API para recuperar certificados do cliente.

ITlsTokenBindingFeature: Define métodos para trabalhar com parâmetros de ligação de tokens TLS.

ITrackingConsentFeature: Usado para consultar, conceder e retirar consentimento do utilizador relativamente ao armazenamento de informações do utilizador relacionadas com a atividade e funcionalidade do site.

Recursos adicionais