刚接触 Blazor,我不确定用户 session 是如何工作的。
我正在尝试使用 Blazor 服务器托管 (.NET Core 3.1) 建立一个网站。 我有一项存储客户的服务,如下所示:
public class AppData
{
public Customer CurrentCustomer { get; set; }
public AppData()
{
this.CurrentCustomer = new Customer() { IsWebConnected = false };
}
}
在 Startup.cs 上我添加:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
AppData data = new AppData();
services.AddSingleton<Service.AppData>(data);
}
这是什么意思? 设置 CurrentCustomer 后(例如登录页面),当我在浏览器上启动时,我可以使用不同页面上的相关数据来访问它。 但是当我在我的电脑上启动另一个浏览器时,我会看到相同的用户集(具有相同的值)。看来是共享的。
我一直在开发旧的 ASP.NET Webform,并且尝试做与 Session 相同的事情(用户一个 session ),但是 Blazor 的方式是否相同?
感谢您的帮助。
最佳答案
AppData data = new AppData();
services.AddSingleton<Service.AppData>(data);
这会添加一个 Singleton 实例。是的,这是所有用户共享的。不涉及 Cookie。其行为类似于 WebForms 中的 Application[]
对象。
Session[]
没有直接的对应项,但有很多解决方案。文档 list them here .
请注意,您应该尝试尽可能“无状态”,因此请考虑在每次页面初始化时从数据库中获取数据。
关于blazor - Blazor 如何管理用户 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62147623/