2009-11-05 77 views
1

也许问题是错误的,但这是我想实现的,也许还有其他方法可以做到这一点。ASP.NET有没有办法将应用程序状态保存为不同服务器上的会话状态?

我有ASP.NET应用程序运行.net 3.5,有一个客户端列表和其他几个List应用程序的所有用户之间共享的基于对象。即。当客户端登录他的用户ID并且少数其他属性保存在应用程序状态下的某个列表中。问题是这个应用程序很繁重,而且它的应用程序池需要每天重新启动一次,所以保存在这些List对象中的所有信息都会丢失。保存在外部服务器上以超出Pro模式保存的客户个人数据。

有什么办法可以解决它吗?共享会话?类似的东西。

请不要MSSQL解决方案...

干杯,专业人员!!!!

回答

1

你看过缓存数据列表吗?

这个SO文章有一些很好的detials。

+0

欢呼声,似乎或多或少我在找什么 – eugeneK 2009-11-05 11:36:37

1

您应该只使用应用程序状态作为其他地方持久数据的缓存。然后,您将使用Application_Start或一些Lazy加载包装类将此类持久数据检索到应用程序对象中。

如果您正在存储易失性数据而不是在应用程序对象的其他地方保存,那么您有麻烦了。希望你能抽象出一些包装器对象后面的应用程序对象,以便你的代码可以访问包装器而不是应用程序对象。现在您需要确保修改已保存在其他位置,以便在重新启动时恢复它们。

坦率地说,应用程序状态对象实际上是移植ASP-Classic站点的一种帮助。由于您应该将应用程序状态视为缓存,因此它与ASP.NET缓存对象之间的功能重叠。

+0

因此,你建议保存在缓存和应用程序池回收时会发生什么? – eugeneK 2009-11-05 12:01:40

+0

我并不是建议使用Cache来解决池回收问题,我只是指出这里存在重叠。您需要在一些非易失性位置存储共享数据,并在应用程序启动或按需时将其加载到应用程序或缓存中。如果您的代码修改了数据,则需要将其保存回非易失性存储。如果您想要支持Web Garden或Farms,那么使用缓存会更好,因为您可以在缓存项目上创建SQL或文件依赖关系。 – AnthonyWJones 2009-11-05 12:38:31

相关问题