c# - Blazor ProtectedSessionStorage 对象 NULL
问题描述
我在 ProtectedSessionStorage 上创建了一个帮助类来读取/写入数据
using Microsoft.AspNetCore.ProtectedBrowserStorage;
public class SessionObjectHelper
{
[Inject] private ProtectedSessionStorage ProtectedSessionStore { get; set; }
public async Task<string> GetTestProperty()
{
var value = await ProtectedSessionStore.GetAsync<string>("TestProperty") ?? string.Empty;
return value;
}
public async Task SetTestProperty(string value)
{
await ProtectedSessionStore.SetAsync("TestProperty", value);
}
}
如果我从 Component 调用这些方法中的任何一个,如下所示,ProtectedSessionStore 始终为 NULL
[Inject] private SessionObjectHelper SessionObjectHelper { get; set; }
protected override async Task OnInitializedAsync()
{
var testProperty= await SessionObjectHelper.GetTestProperty();
}
解决方案
你的SessionObjectHelper
类应该声明一个构造函数来获取注入的服务,而不是使用[Inject]
属性,例如
public class SessionObjectHelper
{
private ProtectedSessionStorage storage;
public SessionObjectHelper(ProtectedSessionStorage storage)
{
this.storage = storage;
}
该[Inject]
属性旨在与 Razor 组件一起使用,而不是常规类。
然后你可以使用
[Inject] public SessionObjectHelper SessionObjectHelper { get; set; }
在你的组件中。注意我改为public
- 如果它是私有的,则运行时将无法查看/设置它。
推荐阅读
- android - 如何安装旧版本的 Google Play 服务?(SDK安卓)
- javascript - 从 React Native 中的错误对象获取堆栈数据 - Expo - CRNA
- php - PHP Prepared Statement vs mysqli_real_escape_string
- php - 完整日期模式正则表达式返回部分日期模式
- getelementsbyclassname - document.getElementsByClassName 困难
- powershell - 我需要在 PowerShell 中使用 $ 变量和某种比较
- java - 长按退格键时清除 EditText 的所有内容?
- c - 如何在 C 中编写基于 epoll 的套接字客户端
- hive - 在 Hive 中滚动 7 天的多维总和
- javascript - react-bootstrap中FormControl和ControlLabel之间的高度不同