使用HttpContext访问Global.asax.cs中的公共静态变量有问题.当前(c#)
本文关键字:有问题 变量 静态 当前 Global 访问 HttpContext asax cs 使用 | 更新日期: 2023-09-27 18:08:49
在一个Web项目中,我在global.asax.cs中定义了一个公共静态变量(Store),它需要在整个应用程序中都可以访问。
public class Global : HttpApplication
{
public static UserDataStore Store;
void Application_Start(object sender, EventArgs e)
{
Store = new UserDataStore();
Store.CurrentUsers = new Hashtable();
}
void Session_Start(object sender, EventArgs e)
{
if (!Store.UserExists(HttpContext.Current.Session.SessionID))
Store.AddUser(HttpContext.Current.Session.SessionID, "StubUser");
}
}
我需要在另一个不能引用Web项目的项目中访问它(它是全局对象),因为它会导致循环引用。
我的解决方法是尝试使用HttpApplication对象检索Store:
UserDataStore udStore = (UserDataStore) HttpContext.Current.Application["Store"];
编译,但是返回一个空对象。
我在谷歌上找过类似的例子,但我找到的大多数例子都支持以下两种方法之一:
- 使用Application["]变量,这是次优的,并根据本文用于经典ASP兼容性:http://support.microsoft.com/kb/312607
- 通过Web项目的Global类访问它,这在当前的设置中不是一个选项。
这看起来应该是可能的,所以希望我错过了一些愚蠢的东西。
如果你能提供任何帮助,我将不胜感激。谢谢。
使用共享数据创建第三个(库)项目,并从其他两个项目中引用它
Application["]应该与HttpContext.Current.Application相同。你记得加这个值吗?您可以从Application_Start调用它们中的任何一个。
Application["Store"] = Store
或
HttpContext.Current.Application["Store"] = Store