Condividi tramite


IHttpContextAccessor / HttpContext in ASP.NET Core SignalR

Nota

Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 9 di questo articolo.

Importante

Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non fornisce alcuna garanzia, espressa o implicita, in relazione alle informazioni fornite qui.

Per la versione corrente, vedere la versione .NET 9 di questo articolo.

IHttpContextAccessor / HttpContext in genere è consigliabile evitare con SignalR perché un HttpContext valido non è sempre disponibile. Nella maggior parte dei casi, il contesto non esiste (null).

Anche quando è disponibile un'istanza di HttpContext, il contesto dipende dal trasporto:

  • WebSockets riceve un singolo contesto come risultato dell'handshake iniziale.
  • Il long polling riceve un nuovo contesto per ogni richiesta di "poll" del client.
  • Un servizio SignalR riceve un contesto fittizio, simulato o intermediario.

Quando si lavora all'interno di un hub SignalR, è possibile accedere al HttpContext direttamente usando il metodo GetHttpContextExtensions.GetHttpContext. Questo metodo restituisce il HttpContext per la connessione corrente o null se la connessione non è associata a una richiesta HTTP. Ciò è particolarmente utile per recuperare informazioni di connessione HTTP, ad esempio intestazioni e stringhe di query, direttamente all'interno dell'hub. È consigliabile chiamare questo metodo al posto di IHttpContextAccessor per accedere alle HttpContext nell'hub. Per altre informazioni, vedere Usare hub in ASP.NET Core SignalR.

Per indicazioni su IHttpContextAccessor/HttpContext nelle app ASP.NET Core Blazor, vedere IHttpContextAccessor/HttpContext nelle app ASP.NET Core Blazor.