如何将字符串从httpcontet.current.session.getstring转换为给定的类型



在.net 4.8中,我们使用的HttpContext与类似

HttpContext.Current.Session["Settings"]) as List<UserSettings>

但在.net核心中,它给出了一个错误:无法将字符串转换为列表。

_accessor.HttpContext.Session.GetString("Settings")) as List<UserSettings>

在.net Core中,必须序列化所有会话数据才能启用分布式缓存场景。复杂类型必须由用户使用另一种机制(如JSON(进行序列化。

添加以下扩展方法来设置和获取可序列化对象:

public static class SessionExtensions
{
public static void Set<T>(this ISession session, string key, T value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static T Get<T>(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default(T) : 
JsonConvert.DeserializeObject<T>(value);
}
}

更改代码以使用上述扩展方法。

List<Settings> settings = _accessor.HttpContext.Session.Get<List<Settings>>("Settings")

参考:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.2

为什么不像在这里一样先获取字符串:_accessor.HttpContext.Session.GetString("设置"((并将其保存到一个变量中,然后初始化一个类型字符串列表,然后将其添加到其中?

相关内容

  • 没有找到相关文章

最新更新