我想为我的 Blazor 服务器端应用程序使用部署槽,但它在交换期间停止为当前用户工作,他们必须刷新页面。
出于性能原因,我正在使用 Azure SignalR 服务,所以这有点道理,我想它是这样的:
连接保存在内存中,当我交换时,显然它已经消失了。至少没有 SignalR 服务。但是我的 SignalR 服务不应该保持 SignalR 连接(见红色)吗?我设置不正确吗?
我发现其他人也有类似的问题(不使用 Blazor),但我不确定这些是否适用于 Blazor,特别是因为我只想减少 1-2 分钟的停机时间以进行更新......
自动重新连接 SignalR 客户端在 Azure 插槽交换上断开连接
将连接存储在外部存储中。但是手动处理连接是荒谬的吗? https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/mapping-users-to-connections
更新: 见:https ://www.youtube.com/watch?v=Vvjdqq8MB44&t=12m10s
似乎有“网络流量”直接流向 Blazor 应用程序。我的猜测:交换后,“Web 流量”仍然流向前一个实例,而 SignalR 流量流向新交换的实例。这听起来像是个问题。
但再一次,我不知道“Web 流量”到底是什么,或者这是否是问题所在,以及 Azure 是否提供了解决问题的方法,所以仍然会得到明确的答案。