Mik*_*mos 2 c# session httpcontext asp.net-core
我有一个 Web 表单项目,我正在尝试将其转换为 ASP.NET Core。我的问题是,在网络表单中,我将一个对象保存到会话中,当我获取它时,我可以对其进行更改并保留它们。另一方面,在核心中,我通过序列化对象将其设置为会话。当我获取它并进行更改时,它不会影响会话中存储的对象。有没有办法按原样保存对象(无需序列化它),以便当我从会话中获取它并对其进行更改时,可以继续使用它而不必再次在会话中设置它?
会议是
System.Web.HttpContext.Current.Session["object"]
Run Code Online (Sandbox Code Playgroud)
并做到了
AppHttpContext.Current.Session.GetString("object")
Run Code Online (Sandbox Code Playgroud)
然后我将它反序列化为我想要的对象。
Ps:我使用 AppHttpContext 在控制器外部获取会话
要在会话中使用对象/数组,您需要一些自定义:`
public static class SessionExtensions {
public static void SetObject(this ISession session, string key, object value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static T GetObject<T>(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
} }
Run Code Online (Sandbox Code Playgroud)
现在你可以这样设置:
var objComplex = new ComplexClass();
HttpContext.Session.SetObject("ComplexObject", objNew);
Run Code Online (Sandbox Code Playgroud)
并检索它:
var objComplex = HttpContext.Session.GetObject("ComplexObject");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14022 次 |
| 最近记录: |