gpt4 book ai didi

c# - 存储在 Session 中的变量在整个页面生命周期中是否被反序列化一次或多次?

转载 作者:太空狗 更新时间:2023-10-29 21:03:28 26 4
gpt4 key购买 nike

我想以类似于 discussed on CodeProject 的方式包装 session 变量.

public static class WebSession
{
private const string CurrentUserKey = "CurrentUser";

private static HttpSessionState Session
{
get { return HttpContext.Current.Session; }
}

public static bool Exists
{
get { return Session != null; }
}

public static User CurrentUser
{
get { return Session[CurrentUserKey] as User; }
set { Session[CurrentUserKey] = value; }
}
}

这是我的问题:如果我必须在同一页面中多次访问 CurrentUser,我是否可以通过将其分配给局部变量而不是访问包装属性来提高性能?或者 HttpSessionState 是否确保对象在每个请求中只被反序列化一次,以便同一 http 请求中的后续调用不再花费任何费用?

谢谢,亚伦

最佳答案

每个请求都有一个 session 状态的内存副本。因此,通过本地复制 session 变量可以节省的唯一成本是从 Object 转换为您的类型的成本。然后在请求结束时将内存中的副本添加到 session 。

Session是否在一个页面上被序列化和反序列化取决于你选择的Session Provider。对于进程内 session 状态,不会发生序列化。对于 session 服务器,对象必须首先被序列化。

关于c# - 存储在 Session 中的变量在整个页面生命周期中是否被反序列化一次或多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2150153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com