首先,请原谅我的愚蠢问题。我是ASP.net和C#的新手。当我用Google搜索了解asp.net中的会话时,我偶然发现了很多关于“自定义会话管理器”的讨论。
为什么我需要使用自定义会话管理器?我可以像下面的例子一样使用会话吗?
//Default.aspx
Session["name"] = "My Name";
然后
//NextPage.aspx
Label1.Text = "Hello" + (string)Session["name"];
答案 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;
}
...
}
希望这有帮助!