如何访问 Blazor WebSocket 连接中的 id 查询字符串参数?
How Can the `id` Query String Parameter in a Blazor WebSocket Connection Be Accessed?
使用我的 Blazor 服务器端应用程序进行调试时,我看到以下消息:
[2022-02-25T10:40:19.177Z] Information: WebSocket connected to wss://<host>/_blazor?id=<_identifier_>.
我对 id
查询字符串参数特别感兴趣。这个值在 Blazor 应用程序中是否以任何方式可用?我查看了 ComponentHub.Context.ConnectionId
,但它似乎与该值不匹配。
我知道我可以使用 IHttpContextAccesssor
,但我想远离它,因为这是 considered poor practice with Blazor applications。
(如果我对这个特定场景有误,那也很高兴知道。)
这是 SignalR 握手的内部实现细节,绝对不能让开发人员对其进行任何操作。
例如,如果由于网络问题无法建立 websocket 连接,SignalR 会回退到长轮询,并且每个长轮询请求都会获得一个新的 ID 查询参数,该参数在内部都映射到相同的SignalR 连接 ID。
另请参阅这篇很棒的文章为什么这是个坏主意:https://consultwithgriff.com/signalr-connection-ids/
使用我的 Blazor 服务器端应用程序进行调试时,我看到以下消息:
[2022-02-25T10:40:19.177Z] Information: WebSocket connected to wss://<host>/_blazor?id=<_identifier_>.
我对 id
查询字符串参数特别感兴趣。这个值在 Blazor 应用程序中是否以任何方式可用?我查看了 ComponentHub.Context.ConnectionId
,但它似乎与该值不匹配。
我知道我可以使用 IHttpContextAccesssor
,但我想远离它,因为这是 considered poor practice with Blazor applications。
(如果我对这个特定场景有误,那也很高兴知道。)
这是 SignalR 握手的内部实现细节,绝对不能让开发人员对其进行任何操作。
例如,如果由于网络问题无法建立 websocket 连接,SignalR 会回退到长轮询,并且每个长轮询请求都会获得一个新的 ID 查询参数,该参数在内部都映射到相同的SignalR 连接 ID。
另请参阅这篇很棒的文章为什么这是个坏主意:https://consultwithgriff.com/signalr-connection-ids/