在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项目(以及它的Global对象)的项目中访问它,因为它会导致循环引用。
我的解决方法是尝试使用HttpApplication对象检索Store:
UserDataStore udStore = (UserDataStore) HttpContext.Current.Application["Store"];
这会编译,但会返回一个null对象。
我试图找到其他像这样的例子,但我发现其中的大部分内容都支持两种方法之一:
这似乎应该是可能的,所以希望我错过了一些愚蠢的东西。
非常感谢您提供的任何帮助。感谢。
答案 0 :(得分:3)
使用共享数据制作第三个(库)项目,并从其他两个项目中引用它。
答案 1 :(得分:1)
Application [“”]应该与HttpContext.Current.Application相同。你还记得加上这个价值吗?您可以从Application_Start调用其中任何一个。
Application["Store"] = Store
或
HttpContext.Current.Application["Store"] = Store