为什么我需要使用自定义会话管理器

本文关键字:自定义 会话 管理器 为什么 | 更新日期: 2023-09-27 18:02:53

首先,请原谅我愚蠢的问题。我是ASP.net和c#的新手。当我在谷歌上了解asp.net中的会话时,我偶然发现了许多关于"自定义会话管理器"的讨论。

为什么我需要使用自定义会话管理器?我可以像下面的例子那样使用会话吗?

//Default.aspx
Session["name"] = "My Name";
然后

//NextPage.aspx
Label1.Text = "Hello" + (string)Session["name"];

为什么我需要使用自定义会话管理器

可以使用不同的会话管理器来更改会话存储在内存、文件或数据库中的行为。

不,您不需要"自定义会话管理器"-我一直在使用ASP。. NET使用了近10年,以前从未遇到过这个术语。

您的示例使用Session是可以接受的(尽管对.ToString()的调用不是是必要的,您可以将其直接转换为String,以防止空值)。

一般来说,你只需要担心自己的Session如果你是在一个多服务器的webfarm或负载均衡集群上工作。

有时需要创建一个名为Session Manager的类来管理在应用程序屏幕之间传递的所有信息。

在向导或任何过程中多次使用这些变量,这些变量最终是正确的,并且有必要删除或修改这些信息。通过这种方式,您可以通过对象组或变量组来实现。

我的建议是创建它并明智地使用(记住你正在使用服务器的(iis)内存)

想法示例:

public class SessionManager
{
    //Groups of variables
    public enum Groups
    {
        Users,
        Processes
    }
    //Value keys
    private static int USERID
    {
        get { return USERID"; }
    }
    private static string USERGUID
    {
        get { return "USERGUID"; }
    }
    //Properties        
    public String UserGuid
    {
        get { return this.session[USERGUID]; }
        set { this.session[USERGUID] = value; }
    }
...
    //Finnish using values
    public bool Finnish(Groups group)
    {
        switch (group)
        {
            case Groups.Users:
                this.Session.Remove(USERID);
                this.Session.Remove(USERGUID);
                break;
            case Groups.Processes:
                this.Session.Remove(UP);
                this.Session.Remove(DOWN);
            default:
                return false;
        }
        return true;
    }
...
}

希望这对你有帮助!