【发布时间】:2015-02-17 08:37:48
【问题描述】:
我目前在会话方面遇到了一个奇怪的问题,我使用 MVC 已经有一段时间了,在以前的版本中从未遇到过这个问题。目前第一次使用MVC5做一个新系统,一切都很好。会话设置没有问题,但是,如果我在 VS 中修改 cshtml 文件,我的会话将被终止。
我还有一个文件上传功能,但是当你上传一个文件然后导航到另一个页面时,会话又消失了。这可以在本地运行,也可以在我们用于沙盒的 Windows Server 机器上运行。
新版本的 MVC 对会话有什么改变吗?我以前从未有过这个。我已将其设置为使用进程内会话,通常不需要更改任何内容,但为了使用无 cookie、使用 cookie 等作为选项,我已经设置好了。似乎没有任何效果。
如果有人有一个很棒的想法。
【问题讨论】:
-
至于
cshtml文件的修改 - IIS 需要重新编译视图,此时会话被终止也就不足为奇了,因为(可能)应用程序池已重置。您上传的文件是什么,它们去了哪里?我有很多关于最新 MVC 的项目,并且文件上传没有问题。 -
我认为这是两个相同的问题。它们是 PDF 文件,它们位于“内容”文件夹内的文件夹中。似乎每次修改/添加/删除/等文件时都会进行新的编译。尽管它在 MVC 4 中从未这样做过,但我的代码几乎完全相同。 MVC 从什么时候开始编译 Views?
-
MVC 总是编译视图 - 在第一次点击页面时,它编译视图并缓存二进制文件。您可以使用预编译的视图进行部署,并且不会受到“首次命中惩罚”。真正的问题是“MVC 何时开始失去视图编译会话?”我猜这取决于会话配置 - 如果您将会话数据配置为在 IIS 之外持久保存,您的会话将不会在应用程序池回收时被终止。
-
所以解决方法是重新配置会话。并且不要将文件保存到“内容”文件夹中。
-
我可以理解,如果它在 MVC 4 中做了同样的事情,但它没有。
标签: c# .net asp.net-mvc session session-state