什么可以破坏会话对象asp .net?

时间:2014-07-09 12:46:50

标签: c# asp.net asp.net-mvc session

我在ASP .NET / C#MVC中使用Session[""]个对象。我做了很多检查,但我问自己,如果没有我指定它会破坏会话对象是什么?

我想确保这些Session[""]在某些过程中保持不变,并且只能通过我的指示清除或者用户退出应用程序。

2 个答案:

答案 0 :(得分:2)

如果你正在使用InProc,那么很多事情都可以杀死会话状态。 e.g。

  • 超时(可以在配置中设置)
  • AppPool回收
  • Web.Config change
  • 服务器崩溃

如果您需要更持久的解决方案,请阅读this articlethis article中还有一些备选方案。

答案 1 :(得分:1)

它取决于您使用的会话状态类型。

InProc - 如果Web服务器进程关闭或崩溃,会话将被销毁。 IIS应用程序池处于活动状态后,默认关闭时间为20分钟。如果IIS应用程序池达到其内存限制,它也将关闭,因此这是建议最少的会话状态管理方法。

StateServer - 会话存储在服务器上的单独服务中。会话将保持活动状态,直到此服务关闭或不可用。它比InProc更可靠,但是如果服务关闭,你会丢失任何会话数据。

SQLServer - 会话存储在SQL数据库中。这是最强大的解决方案,会话基本上得到保证,直到你销毁它们,但它也是最复杂的设置,需要SQL服务器和数据库。

自定义 - 存储您必须指定的会话的其他一些方法。

有关该主题的更多信息,请参阅以下链接。

http://msdn.microsoft.com/en-us/library/vstudio/ms178581%28v=vs.100%29.aspx http://msdn.microsoft.com/en-us/library/vstudio/system.web.sessionstate.sessionstatemode%28v=vs.100%29.aspx