跨重启保留 ASP.NET 应用程序状态

Posted

技术标签:

【中文标题】跨重启保留 ASP.NET 应用程序状态【英文标题】:Preserving ASP.NET Application State Across Restarts 【发布时间】:2010-11-19 18:09:29 【问题描述】:

有什么好的方法可以在重新启动时保留 ASP.NET 应用程序状态?

我希望能够设置一些值重新启动应用程序并让它们仍然存在。 我想主要针对甚至不需要数据库的小型“一次性”测试网络应用程序执行此操作。

有没有办法用静态成员和序列化来做到这一点?网络缓存?

更新: 应用程序应该能够更新这些值。 值可以是自定义对象,例如:

public class Person    
  
  public string FirstName  get; set;   
  public string LastName  get; set;       
  

【问题讨论】:

如何将这些值存储在 web.config 文件中? 如果该值是一个小对象图怎么办......这会持续到 web.config 吗?以前从未尝试过。 请澄清问题 - 您是否需要应用程序能够更改这些值,然后在应用程序重新启动时显示它们?如果是,则 XML 将它们序列化为其他 XML 文件,然后在应用程序启动时将它们读入。 我认为这可能是唯一的方法......除非有人想出了一些我不知道的应用程序或缓存技巧。 【参考方案1】:

我相信您可以将 ASP .NET 会话存储在 SQL Server Server 数据库中。我想这会在应用程序重新启动,甚至关闭/重新启动时持续存在。

【讨论】:

【参考方案2】:

为什么不直接使用 ASP.NET 状态服务:

http://msdn.microsoft.com/en-us/library/ms972429.aspx

我错过了什么吗?

【讨论】:

进程重启时会话状态丢失。它不是持久的。 Nader,如果您使用 ASP.NET 状态服务,当您重新启动应用程序时,会话状态不会丢失。它在您的应用程序进程之外运行。【参考方案3】:

您需要某种持久性数据存储,无论是数据库、xml 文件还是其他东西。

您可能对SimpleRepository with SqlLite from SubSonic 感兴趣,它与您所描述的非常接近。

【讨论】:

我正在尝试轻一点。但我昨天用 SQLite 做了 SimpleRepo。我想知道序列化为 XML 是否是除了 db4o 和 subsonic 之外的唯一其他方式。

以上是关于跨重启保留 ASP.NET 应用程序状态的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Session详解

跨 DNN 和 ASP.net 应用程序共享身份验证、成员资格和角色

JSF 2.0:跨多个视图保留组件状态

如何在 ASP.NET 中跨多个 Web 应用程序维护相同的会话 ID

如何针对跨站点脚本清理查询字符串输入 - 反映 ASP .Net(Web 窗体)应用程序中的问题?

ASP.NET跨页面传值——Application