我尝试在IProcessHostPreloadClient类型的类中设置Application对象(代码在应用程序初始化时运行,在此解释:http://www.codeproject.com/Articles/795265/IIS-Asp-net-warm-up-Auto-Start-Application):
public class DeserializeEdocsProvider : System.Web.Hosting.IProcessHostPreloadClient
{
public void Preload(string[] parameters)
{
...
//the following fails with message:
//"Object reference not set to an instance of an object."
HttpContext.Current.Application["testtest"] = "test";
...
}
}
我想要的只是在应用程序启动时(在应用程序池回收之后)创建一个对象,并在以后访问该对象时,在对Web应用程序的其他请求中。任何解决方案都表示赞赏。
答案 0 :(得分:1)
在课堂上有一个静态变量/属性,比如MyVar
,说MyClass
:
public class MyClass
{
...
private static int _myVariable;
public static int MyVar {get; set;}
...
}
现在,在Application_Start()
中设置Global.asax
方法内的值(如果Global.asax
不添加一个):
protected void Application_Start(object sender, EventArgs e)
{
...
MyClass.MyVar = 100;
...
}
稍后,从任何地方访问变量(它是一个公共静态属性):
...
lblMyLabel.Text = MyClass.MyVar.ToString();
...