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

时间:2013-03-07 01:41:52

标签: c# session

首先,请原谅我的愚蠢问题。我是ASP.net和C#的新手。当我用Google搜索了解asp.net中的会话时,我偶然发现了很多关于“自定义会话管理器”的讨论。

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

//Default.aspx

Session["name"] = "My Name";

然后

//NextPage.aspx

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

不,您不需要“自定义会话管理器” - 我已经使用ASP.NET近10年了,之前从未遇到过这个术语。

Session的示例使用是可以接受的(尽管对.ToString()的调用不是 必要的,您可以将其直接投射到String哪个警卫反对空值。)

一般来说,如果您正在使用多服务器webfarm或负载平衡群集,则只需要担心Session

答案 2 :(得分:1)

有时您需要创建一个名为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;
    }

...

}

希望这有帮助!