跨重启保留 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 应用程序状态的主要内容,如果未能解决你的问题,请参考以下文章
跨 DNN 和 ASP.net 应用程序共享身份验证、成员资格和角色
如何在 ASP.NET 中跨多个 Web 应用程序维护相同的会话 ID