Blazor 中的 Session 功能并不和 Webforms 一样,但可以通过使用 Blazor 的 LocalStorage 来实现类似的功能。下面是示例代码:
在 Startup.cs 中添加服务:
public void ConfigureServices(IServiceCollection services)
{
// ...其他代码
services.AddBlazoredLocalStorage();
// ...其他代码
}
在 Blazor 组件中使用:
@page "/my-page"
@using Blazored.LocalStorage
@inject ILocalStorageService localStorage
@code {
string sessionId;
protected override async Task OnInitializedAsync()
{
sessionId = await localStorage.GetItemAsStringAsync("sessionId");
if (string.IsNullOrEmpty(sessionId))
{
sessionId = Guid.NewGuid().ToString();
await localStorage.SetItemAsStringAsync("sessionId", sessionId);
}
}
}
上面的代码使用了 Blazored.LocalStorage,需要在 NuGet 中安装该包。在 OnInitializedAsync 方法中,首先尝试从 LocalStorage 中获取 sessionId,如果没有则生成一个新的 sessionId 并保存在 LocalStorage 中。之后每次需要使用 sessionId 时可以从页面组件中获取。