Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 管理单个密钥的ASP.NET会话超时_C#_Asp.net_Session - Fatal编程技术网

C# 管理单个密钥的ASP.NET会话超时

C# 管理单个密钥的ASP.NET会话超时,c#,asp.net,session,C#,Asp.net,Session,我想以与其他钥匙不同的方式管理钥匙的时间移动 可能吗 我的意思是,让我们考虑两个会话键:“用户”和“ RedirectUrl < /代码>”。我想保留我的“用户”会话对象1小时,保留我的“重定向URL”会话对象1分钟 如何处理这个问题?没有现成的方法以您想要的方式使用会话类。对此,您必须使用自己的解决方案 Cache确实有一种机制,允许您在一定时间后使特定对象过期,但它可能不适合您的场景,因为Cache在所有会话中共享 如果您在密钥前添加某种唯一标识符,并且仍然可以区分不同的用户(例如,在每个密

我想以与其他钥匙不同的方式管理钥匙的时间移动

可能吗

我的意思是,让我们考虑两个会话键:“<代码>用户<代码>”和“<代码> RedirectUrl < /代码>”。我想保留我的“
用户
”会话对象1小时,保留我的“
重定向URL
”会话对象1分钟


如何处理这个问题?

没有现成的方法以您想要的方式使用会话类。对此,您必须使用自己的解决方案

Cache
确实有一种机制,允许您在一定时间后使特定对象过期,但它可能不适合您的场景,因为
Cache
在所有会话中共享


如果您在密钥前添加某种唯一标识符,并且仍然可以区分不同的用户(例如,在每个密钥前添加userid),那么仍然可以使用Cache来实现这一点,但是您仍然需要考虑这种方法的可伸缩性

我建议只包装您希望在另一个对象中过期的会话值:

[Serializable]
public class SessionUser
{
    public User User { get; set; }
    public DateTime Expires { get; set; }
}

[Serializable]
public class SessionRedirectUrl
{
    public Uri RedirectUrl { get; set; }
    public DateTime Expires { get; set; }
}
如果存在使每个会话值过期的机制,则无论如何都需要逻辑来检查过期日期


但是,正如Icarus所述,您描述的功能可能是缓存,而不是会话

是的,我不需要点击会话性能。我想我会在检索包装的对象后添加我自己的逻辑,谢谢。是的,当只有一分钟时,那可能只是为了保存当前请求的一些数据?Request.Items[“myKey”]的工作方式与会话相同,但密钥仅在当前请求期间有效。这意味着我们只在页面生命周期内获得存储。