编程语言
首页 > 编程语言> > 使用HttpContext.Current(C#)访问Global.asax.cs中的Public Static变量时遇到问题

使用HttpContext.Current(C#)访问Global.asax.cs中的Public Static变量时遇到问题

作者:互联网

在一个Web项目中,我在global.asax.cs中定义了一个公共静态变量(存储),需要在整个应用程序中对其进行访问.

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项目(并且它是Global对象)的项目中访问它,因为它将导致循环引用.

我的解决方法是尝试使用HttpApplication对象检索Store:

UserDataStore udStore = (UserDataStore) HttpContext.Current.Application["Store"];

这将编译,但返回一个空对象.

我一直在Google盲目地尝试寻找其他类似的示例,但是我发现的大多数建议都支持以下2种方法之一:

>使用Application [“”]变量,该变量是次优的,并且根据本文的规定用于Classic ASP兼容性:http://support.microsoft.com/kb/312607
>通过Web项目的Global类访问它,这不是我们当前设置中的选项.

这似乎应该有可能,所以希望我缺少一些愚蠢的东西.

您能提供的任何帮助将不胜感激.谢谢.

解决方法:

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

标签:global-asax,static,c
来源: https://codeday.me/bug/20191031/1972416.html