C# 通过global.asax在应用程序中持久化数据

C# 通过global.asax在应用程序中持久化数据,c#,asp.net,asp.net-3.5,global-asax,C#,Asp.net,Asp.net 3.5,Global Asax,我需要在我的C#/ASP项目中存储一个全局可访问列表-将其存储在服务器上的全局应用程序中,而不是数据库中-因为只有在应用程序运行时才需要数据 到目前为止,我已尝试在应用程序启动(全局Asax)中创建一个列表 activePages=newlist();会话[“活动页面”]=活动页面 这显然是失败的,因为我无法在此时设置会话。正确的方法是什么 理想情况下,我希望能够在应用程序启动时设置一个空白列表,并从任何会话添加到列表中(即,我可以同时从我的PC和笔记本电脑添加到此列表) 我已经有代码来做所有的

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

到目前为止,我已尝试在应用程序启动(全局Asax)中创建一个列表
activePages=newlist();会话[“活动页面”]=活动页面

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

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


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

你需要看看。使用
会话
不会解决您的问题,因为对于访问您的应用程序的每个用户,将创建一个新会话。另外,经过一段时间的不活动后,
会话
将被销毁

   void Application_Start(object sender, EventArgs e) 
   {
        List<ActivePage> activePages= new List<ActivePage>();
        Application["ActivePages"] = activePages;
   }
void应用程序\u启动(对象发送方,事件参数e)
{
List activePages=new List();
应用程序[“ActivePages”]=ActivePages;
}

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

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

protected void Application_Start(object sender, EventArgs e)
{
   ActivePages = LoadFromDB()
}
publicstaticlist-ActivePages=newlist();
受保护的无效应用程序\u启动(对象发送方,事件参数e)
{
ActivePages=LoadFromDB()
}
由于变量是静态的,您还可以随时从任何位置向该列表添加值

但是-以后要如何处理数据?重新启动IIS时,此列表的所有内容都将丢失


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

谢谢,这正是我要找的!