文件更改/上传后丢失会话

时间:2014-12-18 14:15:47

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

我目前在会话方面遇到一个奇怪的问题,我已经与MVC合作了很长一段时间,并且从未在以前的版本中使用过。目前首次使用MVC5制作新系统,一切都很好。正在设置会话没有问题,但是,如果我在VS中修改cshtml文件,我的会话就会被终止。

此外,我还有一个文件上传功能,但是当您上传文件然后导航到另一个页面时会话再次消失。这在本地以及我们用于沙盒的Windows Server框上工作。

有关会话的新版MVC有什么变化吗?我以前从未见过这个。我已经将它设置为使用进程内会话,从来没有通常需要更改任何东西,但我为了使用cookieless,使用cookie等选项。似乎没什么用。

如果有人有想法会很棒。

1 个答案:

答案 0 :(得分:6)

有趣的是,您之前没有注意到这一点 - 一如既往更新网站内容时,IIS可能会重新编译声明性资源,导致重新启动应用程序池,从而有效地删除存储在内存中的所有会话数据。 / p>

解决方案是切换到其他持久会话存储,sql可能是最容易配置的。您只需要一个sql server来运行创建会话数据库的脚本:

http://support.microsoft.com/kb/317604

另一种选择是使用State Server:

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

状态服务器的性能通常优于SQl服务器,因为数据不会持久保存到磁盘上。但是,由于状态服务器是一个单独的进程,因此即使应用程序池重新启动,您的应用程序服务器也不会丢失会话。