相关疑难解决方法(0)

如何在服务器端blazor中存储会话数据

在服务器端Blazor应用程序中,我想存储页面导航之间保留的某些状态。我该怎么做?

常规的ASP.NET Core会话状态似乎不可用,因为很可能适用于ASP.NET Core的“会话和应用程序”中的以下说明:

SignalR 应用程序不支持会话,因为SignalR集线器可以独立于HTTP上下文执行。例如,当长轮询请求由集线器在请求的HTTP上下文的生存期之外保持打开状态时,可能会发生这种情况。

GitHub问题向SignalR for Session添加支持中提到您可以使用Context.Items。但是我不知道如何使用它,即我不知道如何访问该HubConnectionContext实例。

我对会话状态有哪些选择?

c# server-side asp.net-core blazor blazor-server-side

11
推荐指数
5
解决办法
4020
查看次数

如何在 blazor 服务器端关闭页面时获取事件?

我正在 blazor 服务器端制作一个聊天室应用程序。

我想显示每个用户的在线状态。

现在我可以使用该OnAfterRenderAsync事件来获取用户已进入该页面。

exit通过https://docs.microsoft.com/en-us/aspnet/core/blazor/lifecycle?view=aspnetcore-3.1在 blazor 生命周期中似乎没有任何事件

有人说我可以使用该Dispose事件来实现它,而它确实有效。

更重要的是,我有一个疯狂的想法,即使用 window.onbeforeunloadjs事件来调用blazor方法。

我不知道哪一个最好。你能给我一个建议吗?谢谢你。

.net-core asp.net-core blazor blazor-server-side

8
推荐指数
1
解决办法
5915
查看次数

请详细解释 Blazor SignalR / 电路超时

搜索主题:

在上面的文章中,如果看到设置超时的示例。而且文档还解释了客户端和服务器端,每个 ofc 都可能突然崩溃/关闭,或者网络可能被切断等。所以双方似乎都有超时来做不同的事情,比如“向下”(=试图重新连接),最后“关闭”。所以...

问题#1:如何分别为客户端和服务器设置所有(至少 4 个)超时(包括保持活动状态)?

SO帖子显示了JS的答案和program.cs中的答案,有什么区别?它实际上是服务器/客户端吗?客户端启动时可以用C#设置还是需要用JS设置?如果是这样,相关文档在哪里?

问题#2:如何知道服务器端超时?

我从默认模板 (.NET 6) 创建了一个全新的 Blazor 服务器项目,并添加了 SO 帖子中的代码以查看所有电路。当我在 LAN 中运行它并且客户端(其他 PC)打开 Clicker,然后将 PC 置于完全休眠状态时,我看到了该OnConnectionDownAsync事件,但即使在 2 分钟后,也没有OnCircuitClosedAsync(它实际上也有效。之后打开 PC 2mins 实际上会让浏览器重新连接并OnConnectionUpAsync自动启动,无需OnCircuitOpenedAsync)。为什么?超时时间真的很长吗?我在哪里可以读取默认超时的变量,在哪里设置它?服务器保留线路信息多长时间,以便客户端可以重新连接?这不是 5 秒(请参阅上面的链接)。

更新:另一项测试确认断开连接超时似乎正好是 3 分钟(180 秒)。现在我需要了解如何设置它。注意:似乎不是options.WebSockets.CloseTimeout

也不是options.ClientTimeoutInterval

文档说了一些关于

Application_Start在你的Global.asax

我从未读过相关内容。那是什么?这实际上是针对 Blazor 还是其他一些 ASP.NET 项目类型。这是唯一(正确)的方法吗?[编辑:它适用于较旧的框架,而不是 ASP.NET Core 6+]

问题 #3:提到的 5 秒超时是多少?它的观察。服务器完全关闭之前不会超时。

问题 #4AddHubOptions :...和MapBlazorHub...options...之间有什么区别?

从这里 …

signalr blazor asp.net-core-6.0

5
推荐指数
0
解决办法
2097
查看次数