.net核心对象到Session而不序列化

时间:2017-03-08 03:47:27

标签: c# session serialization asp.net-core-mvc

我使用.net核心"Microsoft.AspNetCore.Session": "1.0.0"在我的.net核心项目中使用会话,并使用MSDN上提到的扩展方法,就像这样

public static void Set<T>(this ISession session, string key, T value)
        {
            session.SetString(key, JsonConvert.SerializeObject(value));
        }

在我的控制器中

HttpContext.Session.Set<BLL.clsPolicy>("PolicyDATAAPI", policyObj);

当我将对象传递给会话时进行序列化 它使我的对象类中的一些问题变为:私有变量不是 像这样序列化,

在没有序列化的会话中存储对象存储的任何方法? ?

1 个答案:

答案 0 :(得分:1)

开箱即用,在.Net Core中,无法在没有序列化的情况下将对象存储在会话中。如果要为内存对象库添加会话支持,则需要实现它。

要实现它,您需要实现自己的ISessionISessionStore实现,并将其注册到DI容器中。然后,您需要向ISession添加扩展方法,以支持将密钥和对象作为参数的Set方法。在ISession实现的内部,您可以使用线程安全字典来存储对象。

但是,开箱即用,.Net Core dos不支持在内存中存储非序列化对象。如果你想要它,你必须写它。