使用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"];

编译,但是返回一个空对象。

我在谷歌上找过类似的例子,但我找到的大多数例子都支持以下两种方法之一:

  1. 使用Application["]变量,这是次优的,并根据本文用于经典ASP兼容性:http://support.microsoft.com/kb/312607
  2. 通过Web项目的Global类访问它,这在当前的设置中不是一个选项。

这看起来应该是可能的,所以希望我错过了一些愚蠢的东西。

如果你能提供任何帮助,我将不胜感激。谢谢。

使用HttpContext访问Global.asax.cs中的公共静态变量有问题.当前(c#)

使用共享数据创建第三个(库)项目,并从其他两个项目中引用它

Application["]应该与HttpContext.Current.Application相同。你记得加这个值吗?您可以从Application_Start调用它们中的任何一个。

Application["Store"] = Store 

HttpContext.Current.Application["Store"] = Store