2

我需要在我的 C#/ASP 项目中存储一个可全局访问的列表 - 将其存储在服务器上的全局应用程序而不是数据库中 - 因为只有在应用程序运行时才需要数据。

到目前为止,我已经尝试在应用程序开始(Global Asax)中创建一个列表 activePages= new List<ActivePage>(); Session["activePages"] = activePages;

这显然失败了,因为此时我无法设置会话。正确的方法是什么?

理想情况下,我希望能够在应用程序启动时设置一个空白列表,并从任何会话添加到列表中(即我可以同时从我的 PC 和笔记本电脑添加到此列表中)

我已经有了代码来完成所有的添加和管理,但是找不到全局持久化这个列表的方法。另外,我将如何在我的应用程序的其他页面上使用此列表?我以前真的没有接触过全球asax。

4

2 回答 2

3

你需要看看Application State。使用Session不会解决您的问题,因为每个访问您的应用程序的用户都会创建一个新会话。此外,经过一段时间的不活动Session被破坏。

   void Application_Start(object sender, EventArgs e) 
   {
        List<ActivePage> activePages= new List<ActivePage>();
        Application["ActivePages"] = activePages;
   }
于 2013-01-31T12:32:20.623 回答
0

如果您需要从任何地方访问数据,您可以定义一个静态变量。在应用程序启动时,您可以将数据加载到此变量中:

public static List<ActivePage> ActivePages= new List<ActivePage>();

protected void Application_Start(object sender, EventArgs e)
{
   ActivePages = LoadFromDB()
}

您还可以随时随地向此列表添加值,因为变量是静态的。

但是 - 您以后想对数据做什么?当 IIS 重新启动时,此列表中的所有内容都将丢失。

您不能将 Session 用于这种全局存储。

于 2013-01-31T12:32:27.383 回答