Blazor ProtectedSessionStorage 对象 NULL
Blazor ProtectedSessionStorage object NULL
我在 ProtectedSessionStorage 上创建了一个助手 class 到 Read/Write 数据
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);
}
}
如果我从组件调用这些方法中的任何一个,如下图所示,ProtectedSessionStore 始终为 NULL
[Inject] private SessionObjectHelper SessionObjectHelper { get; set; }
protected override async Task OnInitializedAsync()
{
var testProperty= await SessionObjectHelper.GetTestProperty();
}
你的 SessionObjectHelper
class 应该声明一个构造函数来获取注入的服务,而不是使用 [Inject]
属性,例如
public class SessionObjectHelper
{
private ProtectedSessionStorage storage;
public SessionObjectHelper(ProtectedSessionStorage storage)
{
this.storage = storage;
}
[Inject]
属性旨在与 Razor 组件一起使用,而不是常规 classes。
然后您可以使用
[Inject] public SessionObjectHelper SessionObjectHelper { get; set; }
在你的组件中。请注意,我更改为 public
- 如果它是私有的,运行时将无法 see/set 它。
我在 ProtectedSessionStorage 上创建了一个助手 class 到 Read/Write 数据
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);
}
}
如果我从组件调用这些方法中的任何一个,如下图所示,ProtectedSessionStore 始终为 NULL
[Inject] private SessionObjectHelper SessionObjectHelper { get; set; }
protected override async Task OnInitializedAsync()
{
var testProperty= await SessionObjectHelper.GetTestProperty();
}
你的 SessionObjectHelper
class 应该声明一个构造函数来获取注入的服务,而不是使用 [Inject]
属性,例如
public class SessionObjectHelper
{
private ProtectedSessionStorage storage;
public SessionObjectHelper(ProtectedSessionStorage storage)
{
this.storage = storage;
}
[Inject]
属性旨在与 Razor 组件一起使用,而不是常规 classes。
然后您可以使用
[Inject] public SessionObjectHelper SessionObjectHelper { get; set; }
在你的组件中。请注意,我更改为 public
- 如果它是私有的,运行时将无法 see/set 它。