首页 > 解决方案 > 在 Blazor Server 应用程序中实现用户会话变量的最佳做法是什么?

问题描述

我正在自学编程,我正在尝试使用 c# 和 asp.net 核心的 Blazor Server 应用程序。

参加假设课程Workspace

public List<Item> Items { get; set; }

每个都user可能与 ; 的一对多实例相关联Workspace。这将授权他们选择所述实例之一并对子实例(即)Workspace执行创建、读取、更新和删除操作。请注意,这些操作可能在不同的页面上执行。ItemWorkspace.Items

存储对 current 的引用的最佳方法是什么Workspace?例如,我应该将当前Workspace作为属性存储在User帐户中吗?或者也许有更好的方法来记录会话状态?

标签: c#session

解决方案


在 Blazor Server 上,您可以在多个位置存储状态数据,在ASP.NET Core Blazor 状态管理中有完整记录。概括:

  • 服务器端存储对于跨越多个用户和设备的永久数据持久性,应用程序可以使用服务器端存储。选项包括:Blob 存储、键值存储、关系数据库、表存储
  • URL:对于表示导航状态的瞬态数据,将数据建模为 URL 的一部分。
  • 浏览器存储:对于用户主动创建的瞬态数据,一个常用的存储位置是浏览器的 localStorage 和 sessionStorage 集合。
  • 内存状态容器服务:嵌套和非嵌套组件可以使用已注册的内存状态容器共享对数据的访问。自定义状态容器类可以使用可分配的操作来通知应用程序不同部分的组件状态更改。

推荐阅读