我已经努力尝试,但找不到一种方法来设置ASP.Net Web应用程序中进程内会话的会话超时值。
我正在使用VSTS 2008 + .Net 3.5 + C#。以下是我自己编写的设置超时为1分钟的代码,是否正确?
我在web.config
文件的system.web部分中编写了以下内容:
<sessionState timeout="1" mode="InProc" />
我已经努力尝试,但找不到一种方法来设置ASP.Net Web应用程序中进程内会话的会话超时值。
我正在使用VSTS 2008 + .Net 3.5 + C#。以下是我自己编写的设置超时为1分钟的代码,是否正确?
我在web.config
文件的system.web部分中编写了以下内容:
<sessionState timeout="1" mode="InProc" />
如果想将超时时间设置为20分钟,可以使用以下代码:
<configuration>
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
</configuration>
timeout
属性中的值是设置会话超时值的正确方法之一。
timeout
属性指定会话在空闲多少分钟后被丢弃。该属性的默认值为20。Response.Write(Session.SessionID);
打开浏览器并转到此页面。会显示一个会话 ID。等待一分钟后,点击刷新。会话 ID 将更改。
现在,如果我猜的没错,您想让用户在会话超时后立即注销。为此,您可以设置一个登录页面,验证用户凭据,并创建一个会话变量,如下所示 -
Session["UserId"] = 1;
现在,您需要对每个页面执行此变量的检查,如下所示-
if(Session["UserId"] == null)
Response.Redirect("login.aspx");
这只是一个基本的示例,说明它将如何工作。
但是,为了创建生产质量的安全应用程序,请使用由ASP.NET提供的角色和成员资格类。它们提供基于表单的身份验证,比您尝试使用的普通基于会话的身份验证更可靠。
<configuration>
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
</configuration>
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
属性。当 mode="InProc"
时,stateConnectionString
和 sqlConnectionString
属性将被忽略,而 mode
和 cookieless
的值将设置为它们的默认值。因此,这实际上就是 Wolfwyrd 的答案。 - arcainweb.config
中无法工作,您需要从IIS设置它。