Blazor 在负载均衡时如何跨服务器携带对象

问题描述 投票:0回答:1

我有一些 Blazor 服务器端代码,我可以将其减少到这一点:

@foreach (var employee in Employees)
{
    <tr>
        <td class="btn-group-sm">
            <button class="btn btn-outline-danger"
               @onclick="() => HandleDelete(employee)">
               Delete
            </button>
        </td>
    </tr>
}

并且在单击时调用 HandleDelete(employee),传递它已保存在会话数据中(我假设)的员工对象,以在单击发生时传递。

但是,如果我有多个服务器进行负载平衡,如果将提交事件发送到不同的服务器,会发生什么情况?那个不同的服务器不会有员工对象(我相信)。

这一切是否都取决于 https 会话保持与原始服务器的连接以及所有后续通信都发送到该服务器?

如果是这样,在故障转移情况下会发生什么。在这种情况下,它肯定是与新服务器的连接以获取提交操作。

blazor-server-side failover azure-load-balancer
1个回答
0
投票

Blazor Server 不支持完全负载均衡。客户端应始终与同一服务器上的同一 Blazor 线路保持连接。

这可以通过在负载均衡器上使用粘性会话、使用 Azure SignalR 服务或使用 SkipNegotiation 设置来完成。

使用 SkipNegotiation 设置时,负载均衡器应将所有 SignalR 消息广播到所有节点。

https://learn.microsoft.com/en-us/aspnet/core/signalr/scale

© www.soinside.com 2019 - 2024. All rights reserved.