是否可以为ASP.NET中的每个会话创建一个全局变量?通常我会使用Session:
Session("my_variable") = 10
但是每次我想要使用它时都需要将它投射出来:
Dim my_variable as String = CInt(Session("my_variable"))
我看到如果我创建一个模块,我可以为每个会话创建对整个项目公开的变量......我还看到Global.asax允许模块提供的大部分相同功能。我宁愿避免编写模块......有没有办法在Global.asax或其他一些最佳实践方法中做到这一点?或者Session变量是最好的方式吗?
答案 0 :(得分:2)
为您的变量创建一个包装类,如下所示
public class SessionVariables
{
public static int MyVariable
{
get{ return if( Session["my_variable"] != null ) (int)Session["my_variable"]; else 0;}
set {Session["my_variable"] = value;}
}
}
并使用
SessionVarible.MyVariable = 7;
int p = SessionVarible.MyVariable + 3;
答案 1 :(得分:1)
如果您只想在会话范围内存储/检索数据,那么 Session 对象就是您的选择。 HttpModules对于实现与ASP.NET请求管道中的特定点绑定的某些功能非常有用(例如,假设您要添加对身份验证请求的日志记录)。 Global.asax允许你做类似的事情,并且可能足以满足你的目的(只需实现你想要在global.asax中定位的事件)。
如果您担心从对象中装箱/取消装箱,那么我喜欢hkutluay使用隐藏演员的包装类的想法。