【发布时间】:2012-12-31 03:33:01
【问题描述】:
我正在考虑使用<sessionState mode="InProc" timeout="45" />,因为有些用户重复登录,我想为他们节省一些时间。但是,在我将它添加到我的web.config 文件之前,我想确保不会有副作用。
我阅读了sessionState 版本,虽然我已经相当了解发生了什么,但我很想知道asp.net mvc 3 应用程序的默认设置是什么,因为我的内部没有定义sessionState system.web 此时。
我知道应用程序可以在没有声明的情况下访问Session["key"],尽管我尽量避免将这种类型的负载放在会话上。我会假设我的应用程序正在继承 IIS 7 中的一个设置(此应用程序位于共享托管环境中)。
我知道如果我为 Session 使用专用数据库或服务器可能会出现问题,但这只是一个基本设置,没什么特别的。
asp.net mvc 3 有默认的sessionState 吗?只是遗传吗?如果在 IIS 中的其他地方定义它,在我的 web.config 中覆盖它会产生副作用吗?
【问题讨论】:
-
很抱歉有点跑题了,但是会话的名声很差,因为不可靠,所以... ;)
-
@torm - 我同意,我不打算使用它们。但是我还能如何控制用户由于不活动而自动注销之前的时间长度?
-
我首先想到的是?如果用户浏览页面他不是空闲的,那么唯一要检测的可能是使用 javascript 和全局定义的变量进行鼠标移动检测来比较?网上有例子,SO 上正在广泛讨论“空闲用户检测”:)
-
@torm - 问题不是用户在一个页面上花费 20 分钟,而是他们在 20 分钟内完全没有与站点交互,然后退出。那里没有争论,无论客户端入侵方法如何,他们的会话都会自动过期。请提供证据证明您声称 Session 在身份验证意义上是不可靠的(因为它目前的使用很普遍,我相信有些人会喜欢听到您的论点)。至于
idle user detection,一些证据也会很好。我非常不同意你的整个评论。 -
那么存储在用户浏览器中的 cookie 呢? :) 不是'用于身份验证吗?您可以阅读很多关于会话问题以及为什么人们避免使用它们stackoverflow.com/questions/665029/…、hanselman.com/blog/… 或只是阅读一些 Darin Dimitorv 的答案(“使用会话不好。”:D),但我不想争论。任何方法都是好的,只要它按照你想要的方式工作。
标签: asp.net-mvc-3 web-config session-state