我已经非常努力但无法找到如何为ASP.Net Web应用程序的进程内会话设置会话超时值的解决方案。
我正在使用VSTS 2008 + .Net 3.5 + C#。以下是我自己写的将超时设置为1分钟,这是正确的吗?
我在web.config
<sessionState timeout="1" mode="InProc" />
答案 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.
}
}