ASP.NET Core SignalR 中的 IHttpContextAccessor
/HttpContext
注意
這不是本文的最新版本。 如需目前版本,請參閱本文的 .NET 9 版本。
IHttpContextAccessor
/
HttpContext 通常應該避免 SignalR,因為有效的 HttpContext 不一定可用。 在大部分情況下,內容不存在 (null
)。
即使有 HttpContext 實例可用,內容仍相依於傳輸:
- WebSockets 會因為初始交握而接收單一內容。
- 長時間輪詢會為每個用戶端的「輪詢」要求配置新的上下文。
- SignalR 服務會收到模擬/偽造/填充碼內容。
在 SignalR 中樞內工作時,您可以使用 GetHttpContextExtensions.GetHttpContext 方法來直接存取 HttpContext。 如果連線未與 HTTP 要求相關聯,這個方法會傳回目前連線的 HttpContext 或 null
。 這特別適用於直接在中樞內擷取 HTTP 連線資訊,例如標頭和查詢字串。 建議您透過 IHttpContextAccessor 呼叫此方法,以存取中樞中的 HttpContext。 如需詳細資訊,請參閱 使用中樞於 ASP.NET Core 中 SignalR。
如需 ASP.NET Core Blazor 應用程式中 IHttpContextAccessor/HttpContext 的指引,請參閱 ASP.NET Core Blazor 應用程式中的 IHttpContextAccessor/HttpContext。