【问题标题】:What is the default sessionState in an asp.net mvc 3 application?asp.net mvc 3 应用程序中的默认 sessionState 是什么?
【发布时间】: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


【解决方案1】:

目前默认Timeout = 20 分钟。

These 是 .Net Framework 4 的默认值。我认为它们不会因为 MVC 3 而改变。

【讨论】:

  • 我看过这个页面:msdn.microsoft.com/en-us/library/h6bb9cz9(v=vs.71).aspx,但在搜索时没有找到您在答案中发布的链接。您是正确的,.Net 的值不应更改为 mvc。感谢您提供的信息,它明确指出The default is the InProc value.,默认超时为20
  • 不客气!顺便说一句,在最后一次布局更改之后,MSDN 有点“狂野”。 =D
【解决方案2】:

接受的答案是正确的,但可能 OP 实际上是要询问身份验证超时,即 30 分钟。

我知道这是旧的,但重要的是要澄清会话状态与身份验证无关。 OP 没有说明正在使用哪种形式的身份验证。假设表单身份验证,则默认超时为 30 分钟,并在 web.config 中的 <authentication...<forms 元素中进行控制。我发现在使用进程内会话时,最好将您的身份验证超时设置为小于会话超时。我倾向于使用进程外会话作为首选项,因为它保留了来自应用程序池回收的会话数据。

【讨论】:

猜你喜欢
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
相关资源
最近更新 更多