Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 10 deste artigo.
Advertência
Esta versão do ASP.NET Core não é mais suportada. Para obter mais informações, consulte a Política de suporte do .NET e do .NET Core. Para a versão atual, consulte a versão .NET 9 deste artigo.
Por Justin Kotalik
O HTTP/2 é suportado com ASP.NET Core nos seguintes cenários de implementação do IIS:
- Windows Server 2016 ou posterior / Windows 10 ou posterior
- IIS 10 ou posterior
- Conexão TLS 1.2 ou posterior
- Quando hospedagem fora de processo: As ligações públicas de servidor de borda usam HTTP/2, mas a ligação proxy reversa Kestrel ao servidor usa HTTP/1.1.
Durante uma implementação em andamento, quando uma ligação HTTP/2 é estabelecida, HttpRequest.Protocol reporta HTTP/2. Para uma implementação fora do processo, quando uma ligação HTTP/2 é estabelecida, HttpRequest.Protocol reporta HTTP/1.1.
Para mais informações sobre os modelos de alojamento em processo e fora de processo, consulte ASP.NET Módulo Núcleo (ANCM) para IIS.
O HTTP/2 está ativado por padrão para conexões HTTPS/TLS. As ligações voltam ao HTTP/1.1 se uma ligação HTTP/2 não estiver estabelecida. Para mais informações sobre a configuração HTTP/2 com implantações do IIS, consulte HTTP/2 sobre o IIS.
Recursos avançados de HTTP/2 para suportar gRPC
Funcionalidades HTTP/2 adicionais no IIS suportam gRPC, incluindo suporte para trailers de resposta e envio de quadros de reinicialização.
Requisitos para correr o gRPC no IIS:
- Alojamento em processo.
- Windows 11 Build 22000 ou posterior, Windows Server 2022 Build 20348 ou posterior.
- Conexão TLS 1.2 ou posterior.
Trailers de filmes
Os trailers HTTP são semelhantes aos cabeçalhos HTTP, exceto que são enviados após o corpo da resposta ser enviado. Para o IIS e o HTTP.sys, apenas trailers de resposta HTTP/2 são suportados.
if (httpContext.Response.SupportsTrailers())
{
httpContext.Response.DeclareTrailer("trailername");
// Write body
httpContext.Response.WriteAsync("Hello world");
httpContext.Response.AppendTrailer("trailername", "TrailerValue");
}
No código de exemplo anterior:
-
SupportsTrailersgarante que os reboques são suportados para a resposta. -
DeclareTraileradiciona o nome do trailer fornecido ao cabeçalho de respostaTrailer. Declarar os trailers de uma resposta é opcional, mas recomendado. SeDeclareTrailerfor chamado, deve ser antes que os cabeçalhos de resposta sejam enviados. -
AppendTraileranexa o trailer.
Reiniciar
Reset permite que o servidor redefina uma solicitação HTTP/2 com um código de erro especificado. Um pedido de reinicialização é considerado abortado.
var resetFeature = httpContext.Features.Get<IHttpResetFeature>();
resetFeature.Reset(errorCode: 2);
Reset no exemplo de código anterior especifica o código de erro INTERNAL_ERROR. Para obter mais informações sobre códigos de erro HTTP/2, visite a seção código de erro de especificação HTTP/2.