我已经尽力了,但是找不到如何为ASP.Net Web应用程序的进程内会话设置会话超时值的解决方案。
我正在使用VSTS 2008 + .Net 3.5 + C#。这是我自己写的将超时设置为1分钟的内容,对吗?
我在 web.config
<sessionState timeout="1" mode="InProc" />
我已经尽力了,但是找不到如何为ASP.Net Web应用程序的进程内会话设置会话超时值的解决方案。
我正在使用VSTS 2008 + .Net 3.5 + C#。这是我自己写的将超时设置为1分钟的内容,对吗?
我在 web.config
<sessionState timeout="1" mode="InProc" />
Answers:
如果要将超时设置为20分钟,请使用以下方法:
<configuration>
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
</configuration>
您在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提供的“ 角色和成员资格”类。他们提供基于表单的身份验证,比您尝试使用的基于会话的普通身份验证更加可靠。
如果使用的是MVC,请将其放在Web应用程序的Root目录中的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.
}
}
在此使用web.config
:
<sessionState
timeout="20"
/>
timeout
实际上并不需要列出的大多数属性。stateConnectionString
和sqlConnectionString
被忽略的时候mode="InProc"
,和值mode
,并cookieless
设置为默认值。因此,这确实可以归结为Wolfwyrd的答案。