可能是重复问题:
缓存 v.s 会话
我正在使用一些使用HttpRuntime.Cache来存储值的代码。但是当我关闭窗口时,缓存就消失了。相对于Session,使用这种方式有什么好处吗?
这是我的代码:
protected dynamic Code()
{
dynamic code;
if (String.IsNullOrEmpty(myHttpContext.Request.QueryString["code"]))
{
code = HttpRuntime.Cache["code"];
}
else
{
code = myHttpContext.Request.QueryString["code"];
HttpRuntime.Cache.Insert("code", myHttpContext.Request.QueryString["code"]);
}
return code;
}
protected string GetAccessToken(bool regenerate = false)
{
if (HttpRuntime.Cache["access_token"] == null || regenerate == true)
{
try
{
Dictionary<string, string> args = GetOauthTokens(myHttpContext.Request.QueryString["code"]);
HttpRuntime.Cache.Insert("access_token", args["access_token"], null, DateTime.Now.AddMinutes(Convert.ToDouble(args["expires"])), TimeSpan.Zero);
}
catch
{
OutputError("Code", "Bad Verification Code");
}
}
return HttpRuntime.Cache["access_token"].ToString();
}
Session
是每个工作进程而不是每个线程唯一的。这种差异是巨大的 - ASP.NET总是使用许多线程,但只有在配置时才使用许多进程。对于多个工作进程,Session
应该存储在外部进程中,这是可能的。 - Anders Abel