ASP.NET HttpApplication本地存储

时间:2010-09-01 01:25:18

标签: c# .net asp.net

我需要一些HttpApplication本地存储。我认为ApplicationState就是这个地方,但显然这可以在Appdomain中的HttpApplication实例之间共享。

   public class MyHttpModule : IHttpModule
    {
        private object initializingLock = new object();

        private static HttpApplication last;

        public void Init(HttpApplication context)
        {
            lock (initializingLock)
            {
                // always is false, as expected
               if (last == context) 
               { 
               }

               // is true for 2nd HttpApplication in AppDomain!
               if (last != null && last.Application == context.Application)                    
               {                   
               }

               last = context;
            }
        }
     }

用于存储其他东西可以访问的每个HttpApplication的一些数据的最佳策略是什么?

1 个答案:

答案 0 :(得分:0)

如果您正在为特定(或受控制的)Web应用程序编码,那么您可以在global.asax中添加HttpApplication中所需的任何状态,例如

public class Global : System.Web.HttpApplication
 {
    string MyProperty { get; set;}
    ....

然后在您的模块中,将HttpApplication转换为Global并访问该状态。例如,

var myApp = context as Global;
if (null != myApp) 
{
    var value = myApp.MyProperty;
    ...
}