【问题标题】:Creating an ASP.NET Session Specific Global Variable?创建一个 ASP.NET 会话特定的全局变量?
【发布时间】:2012-05-12 20:52:20
【问题描述】:

是否可以为 ASP.NET 中的每个会话创建一个全局变量?通常我用 Session 来做这个:

Session("my_variable") = 10

但这需要每次我想像这样使用它时强制转换它:

Dim my_variable as String = CInt(Session("my_variable"))

我看到如果我创建一个模块,我可以为每个会话创建对整个项目公共的变量...我还看到 Global.asax 允许模块提供的许多相同功能。我宁愿避免编写模块...有没有办法在 Global.asax 或其他一些最佳实践方法中做到这一点?还是 Session 变量是最好的方法?

【问题讨论】:

    标签: asp.net vb.net session-state global-asax


    【解决方案1】:

    像这样为你的变量创建一个包装类

    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;
    

    【讨论】:

      【解决方案2】:

      如果您只是想在会话范围内存储/检索数据,那么 Session 对象是不错的选择。 HttpModules 对于实现与 ASP.NET 请求管道中的特定点相关的某些功能很有用(例如,假设您想在身份验证请求上添加日志记录)。 Global.asax 可以让您做类似的事情,并且可能足以满足您的目的(只需在 global.asax 中实现您想要定位的事件)。

      如果您担心从 object 装箱/拆箱,那么我喜欢 hkutluay 使用隐藏演员表的包装类的想法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-11
        相关资源
        最近更新 更多