我需要一些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的一些数据的最佳策略是什么?
答案 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;
...
}