2

Blazor 的新手我不确定用户会话是如何工作的。

我正在尝试使用 Blazor Server Hosting (.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 (一个用户会话)相同的事情,但是 Blazor 的方式是否相同?

谢谢你的帮助。

4

1 回答 1

2
AppData data = new AppData();
services.AddSingleton<Service.AppData>(data);

这会添加一个 Singleton 实例。是的,这是在所有用户之间共享的。不涉及 Cookie。它的行为类似于Application[]WebForms 中的对象。

Session[]没有直接对应物,但有很多解决方案。文档在此处列出它们

请注意,您应该尽可能地“无状态”,因此请考虑在每次页面初始化时从 Db 中获取数据。

于 2020-06-02T11:10:47.323 回答