ASP.NET Core SignalR 中的 IHttpContextAccessor
/HttpContext
注意
这不是本文的最新版本。 要查看当前版本,请参阅本文的 .NET 9 版本。
通常,应避免使用 SignalRIHttpContextAccessor/HttpContext,因为有效的 HttpContext 并不总是可用的。 在大多数情况下,上下文不存在(null
)。
即使 HttpContext 实例可用,上下文也依赖于传输:
- WebSocket 由于初始握手而接收单个上下文。
- 长轮询根据客户端“轮询”请求接收新上下文。
- SignalR 服务接收模拟/伪造/填充码上下文。
在 SignalR 中心内工作时,可以使用 GetHttpContextExtensions.GetHttpContext 方法直接访问 HttpContext。 此方法返回当前连接的 HttpContext;如果连接未与 HTTP 请求关联,则返回 null
。 这对于直接在中心内检索 HTTP 连接信息(如标头和查询字符串)特别有用。 建议通过 IHttpContextAccessor 调用此方法,以便在中心内访问 HttpContext。 有关详细信息,请参阅 ASP.NET Core SignalR中的使用中心。
有关 ASP.NET Core Blazor 应用中 IHttpContextAccessor/HttpContext 的指导,请参阅 ASP.NET Core Blazor 应用中的 IHttpContextAccessor/HttpContext。