如何在web.config中设置会话超时

时间:2009-07-30 10:49:11

标签: c# asp.net .net session visual-studio-2008

我已经非常努力但无法找到如何为ASP.Net Web应用程序的进程内会话设置会话超时值的解决方案。

我正在使用VSTS 2008 + .Net 3.5 + C#。以下是我自己写的将超时设置为1分钟,这是正确的吗?

我在web.config

中的system.web部分下写道
<sessionState timeout="1" mode="InProc" />

5 个答案:

答案 0 :(得分:301)

如果要将超时设置为20分钟,请使用以下内容:

    <configuration>
      <system.web>
         <sessionState timeout="20"></sessionState>
      </system.web>
    </configuration>

答案 1 :(得分:47)

您在timeout属性中设置的值是设置会话超时值的正确方法之一。

timeout属性指定会话在被放弃之前可以空闲的分钟数。此属性的默认值为20.

通过为此属性指定值1,您可以将会话设置为在空闲后1分钟内放弃。

要测试它,请创建一个简单的aspx页面,并在Page_Load事件中编写此代码,

Response.Write(Session.SessionID);

打开浏览器并转到此页面。会话ID将被打印。等一分钟过去,然后点击刷新。会话ID将更改。

现在,如果我的猜测是正确的,您希望在会话超时后立即让用户注销。为此,您可以安装一个登录页面来验证用户凭据,并创建一个这样的会话变量 -

Session["UserId"] = 1;

现在,您必须对此变量的每个页面执行检查,如下所示 -

if(Session["UserId"] == null)
    Response.Redirect("login.aspx");

这是一个如何运作的简单示例。

但是,为了使您的生产质量安全的应用程序,使用ASP.NET提供的Roles & Membership类。它们提供基于表单的身份验证,这比您尝试使用的基于会话的正常身份验证更加可靠。

答案 2 :(得分:0)

web.config

中使用此功能
<sessionState 

  timeout="20" 
/>

答案 3 :(得分:0)

(如果它无法从web.config中运行)。您需要从IIS进行设置。

答案 4 :(得分:0)

如果使用的是MVC,请将其放在Web应用程序根目录下的web.config文件中,而不是Views目录中的web.config中。它也需要位于system.web节点中,而不是像他的问题中提到的George2一样:“我在web.config中的system.web部分下编写了”

超时参数值表示分钟。

可以在sessionState元素中设置其他属性。您可以在这里找到信息:docs.microsoft.com sessionState

<configuration>
   <system.web>
      <sessionState timeout="20"></sessionState>
   </system.web>
</configuration>

然后可以通过添加以下方法在Global.asax文件中捕获新会话的开始:

void Session_Start(object sender, EventArgs e)
{
    if (Session.IsNewSession)
    {
        //do things that need to happen
        //when a new session starts.
    }
}
相关问题