【问题标题】:How to set an application variable on application startup如何在应用程序启动时设置应用程序变量
【发布时间】:2015-11-25 15:29:32
【问题描述】:

我尝试在 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 应用程序的其他请求中访问该对象。任何解决方案都值得赞赏。

【问题讨论】:

  • 在类内部有一个静态变量,比如MyVar,比如MyClass,并在Global.asax 中的Application_Start() 方法中设置值。稍后,使用MyClass.MyVar 访问变量。
  • 谢谢你,@mshsayem。您的解决方案对我帮助很大!

标签: c# iis


【解决方案1】:

在你的类中有一个静态变量/属性,比如MyVar,比如MyClass:

public class MyClass
{
    ...
    private static int _myVariable; 
    public static int MyVar {get; set;} 
    ...
}

现在,在Global.asax 中设置Application_Start() 方法内的值(如果Global.asax 不存在,则添加一个):

protected void Application_Start(object sender, EventArgs e)
{
    ...
    MyClass.MyVar = 100;
    ...
}

稍后,从任何地方访问该变量(它是一个公共静态属性):

...
lblMyLabel.Text = MyClass.MyVar.ToString();
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 2023-04-07
    • 2020-01-22
    • 1970-01-01
    • 2023-03-03
    • 2011-12-15
    • 1970-01-01
    相关资源
    最近更新 更多