首先,请原谅我愚蠢的问题。我是 ASP.net 和 C# 的新手。当我用谷歌搜索了解 asp.net 中的会话时,我偶然发现了许多关于“自定义会话管理器”的讨论。
为什么我需要使用自定义会话管理器?我可以像下面的例子那样使用会话吗?
//Default.aspx
Session["name"] = "My Name";
然后
//NextPage.aspx
Label1.Text = "Hello" + (string)Session["name"];
可以使用不同的会话管理器来更改会话存储位置的行为,无论是在内存中、文件还是数据库中。
有时您需要创建一个名为 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;
}
...
}
希望这可以帮助!
不,您不需要“自定义会话管理器”——我已经使用 ASP.NET 将近 10 年了,以前从未遇到过这个术语。
您的示例使用Session
是可以接受的(尽管调用 to.ToString()
不是那么必要,但您可以直接将其强制转换为String
which 可以防止空值)。
一般来说,您只需要担心自己Session
是在使用多服务器 webfarm 还是负载平衡集群。