从类中访问HttpApplication.Application变量

时间:2010-06-09 23:35:35

标签: c# asp.net caching session-variables

我在Global.asax中设置了各种全局参数,如下:

Application["PagePolicies"] = "~/Lab/Policies.aspx";
Application["PageShare"] = "/Share.aspx";
Application["FileSearchQueries"] = Server.MapPath("~/Resources/SearchQueries.xml");
...

我从.ascx.cs或.aspx.cs文件中访问这些变量没有问题 - 即。属于Web内容的文件。但是,我似乎无法从基本类对象(即独立的.cs文件)访问“应用程序”。我在某处读到了使用.cs文件中的细微变化,如下所示,但它在使用时总会引发异常:

String file = (String)System.Web.HttpContext.Current.Application["FileSearchQueries"];

2 个答案:

答案 0 :(得分:7)

虽然您可以在任何类中使用HttpContext.Current,但在调用时仍必须处理HTTP请求 - 否则就没有当前上下文。我认为这是你获得例外的原因,但发布实际例外将有助于澄清问题。

答案 1 :(得分:3)

在app之间共享你的变量,并且为了能够从独立类访问它,你可以使用类的静态变量,而不是使用HttpApplication变量。

public MyClass{
 public static int sharedVar;
}

//and than you can write somwhere in app:
MyClass.sharedVar= 1;

//and in another location:
int localVar = MyClass.sharedVar;