C# 从类访问HttpApplication.Application变量

C# 从类访问HttpApplication.Application变量,c#,asp.net,caching,session-variables,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内

我在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"];

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

要在应用程序之间共享你的变量,并且能够从独立类访问它,你可以使用类的静态变量,而不是使用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;

在Asp.Net的上下文中,您是否使用非aspx类?我认为您是正确的。。。那么,在我的应用程序的所有部分之间共享变量的最佳方式是什么?在.cs文件中,我只有一些需要Web内容的小问题(如上面的Server.MapPath)。这是一个完全不同的问题,您可能应该单独发布,并提供有关应用程序和您想要共享的内容的更多详细信息。当然,需要注意的是,它应该是系统的其他并发用户也需要的一个变量。静态变量在多用户环境中共享。如果由于用户特定的原因而更改变量,则这不是您希望采用的方法。