Partilhar via


IHttpContextAccessor / HttpContext em ASP.NET Core SignalR

Observação

Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 9 deste artigo.

Importante

Estas informações referem-se a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui.

Para a versão atual, consulte a versão .NET 9 deste artigo.

IHttpContextAccessor / HttpContext geralmente devem ser evitados com SignalR porque um HttpContext válido nem sempre está disponível. Na maioria dos casos, o contexto não existe (null).

Mesmo quando uma instância HttpContext está disponível, o contexto depende do transporte:

  • WebSockets recebe um único contexto como resultado do handshake inicial.
  • A long polling recebe um novo contexto por cada pedido de sondagem do cliente.
  • Um serviço de SignalR recebe um contexto simulado/falsificado/interposto.

Ao trabalhar em um hub SignalR, você pode acessar o HttpContext diretamente usando o método GetHttpContextExtensions.GetHttpContext. Esse método retorna o HttpContext para a conexão atual ou null se a conexão não estiver associada a uma solicitação HTTP. Isso é particularmente útil para recuperar informações de conexão HTTP, como cabeçalhos e cadeias de caracteres de consulta, diretamente no hub. Recomendamos chamar esse método por IHttpContextAccessor para acessar HttpContext no hub. Para obter mais informações, consulte Usar hubs no ASP.NET Core SignalR.

Para obter orientação sobre IHttpContextAccessor/HttpContext em apps ASP.NET Core Blazor, consulte IHttpContextAccessor/HttpContext em apps ASP.NET Core Blazor.