我已经非常努力地尝试了,但找不到如何为ASP.Net web应用程序的进程中会话设置会话超时值的解决方案。
我使用的是VSTS2008+ .Net 3.5 + C#。这是我自己写的,将超时设置为1分钟,对吗?
我在web.config
中的system.web部分下写的
<sessionState timeout="1" mode="InProc" />
发布于 2009-07-30 10:56:41
如果要将超时设置为20分钟,请使用类似以下内容:
<configuration>
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
</configuration>
发布于 2009-07-30 10:57:34
您在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类。它们提供了基于表单的身份验证,比你正在尝试使用的普通的基于会话的身份验证可靠得多。
发布于 2019-12-12 23:08:20
如果您使用的是MVC,请将其放入web应用程序根目录下的web.config文件中,而不是视图目录中的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.
}
}
https://stackoverflow.com/questions/1205828
复制相似问题