我的常规程序基本上是从main()开始的,第一个语句总是:
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变量,所以我也将它添加到Application_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...
}
答案 0 :(得分:0)
最好通过会话变量来创建变量的属性并设置和获取,尽管可以通过使其序列化来缓存类
试试这个:
MyClass obj_cl = new MyClass();
//Do your Work
Session["obj_cl"] = obj_cl;
//on retreival
MyClass tempobj = (MyClass)Session["obj_cl"];