如何在asp.net中缓存静态变量
我的常规程序基本上是从main()开始的,第一条语句始终是:如何在asp.net中缓存静态变量,asp.net,class,caching,Asp.net,Class,Caching,我的常规程序基本上是从main()开始的,第一条语句始终是: Main() { AppSettings.Initialize(); //etc. } 在asp.net程序中,我希望使用相同的类,但没有main(),因此我使用Global.asax Application_BeginRequest() { AppSettings.Initialize(); //etc. } Application_Start() { AppSettings.In
Main()
{
AppSettings.Initialize();
//etc.
}
在asp.net程序中,我希望使用相同的类,但没有main(),因此我使用Global.asax
Application_BeginRequest()
{
AppSettings.Initialize();
//etc.
}
Application_Start()
{
AppSettings.Initialize();
//etc.
}
这样,我就可以继续使用全局静态变量,如AppGlobal.ID等。我在WP7中使用相同的类和助手类,它们都可以正常工作,我不在乎
应用程序变量在AppGlobal中,AppSettings大约需要2秒来设置
在asp.net中,它不能以这种方式工作,因为初始化/设置会在每个页面请求中重复。我想缓存
AppGlobal类和AppSettings类,但如何设置
额外编辑此主题以更好地解释问题:
因为只有在第一个页面上,我才能在页面代码中使用AppGlobal.Name变量,所以我还将它添加到了应用程序_BeginRequest中
public class AppSettings
{
//
public static void Initialize()
{
}
static AppSettings()
{
AppGlobal.DeveloperMode = Convert.ToBoolean(AppConfigValue("DeveloperMode,False"));
AppGlobal.DebugLevel = Convert.ToInt32(AppConfigValue("DebugLevel,1"));
AppGlobal.FilesFolder = AppConfigValue("FilesFolder,Files");
AppGlobal.LogFilesFolder = AppConfigValue("LogFilesFolder,LogFiles");
AppGlobal.CompanyName = AppConfigValue("CompanyName");
AppGlobal.OwnerName = AppConfigValue("OwnerName");
AppGlobal.ApplicationID = "";
AppGlobal.Initialize();
}
}
public class AppGlobal
{
public static bool DeveloperMode;
public static int DebugLevel = 0;
public static string ApplicationName = "";
private static bool _initialized;
public static void Initialize()
{
}
AppGlobal()
{
//Initialize application (check license, setup folder names, get settings)
//This takes a few seconds to create
}
}
public class Log
{
public static string FileName;
public static int DebugLevel = 0;
public static bool Initialized = false;
static Log()
{
FileName = AppGlobal.ApplicationName;
}
//etc...
}
最好是生成变量的属性,并通过会话变量进行设置和获取,尽管可以通过序列化来缓存类 试试这个:
MyClass obj_cl = new MyClass();
//Do your Work
Session["obj_cl"] = obj_cl;
//on retreival
MyClass tempobj = (MyClass)Session["obj_cl"];
应用程序启动应该发生一次(在应用程序重新启动后),而不是每次页面请求。我会检查以确保您的应用程序没有在每次请求后超时/重置。
应用程序启动
应该可以工作。应用程序启动事件仅在应用程序第一次启动时触发,而不是针对每个会话启动,甚至更少针对每个请求。编辑:凯尔更快;)但是类如何缓存自身呢?用“缓存这个”?你能举个例子吗?