thể trùng lặp:
Cache v.s SessionWhats sự khác biệt giữa HttpRuntime.Cache và Session?
Tôi đang sử dụng một số mã có sử dụng HttpRuntime.Cache để lưu trữ một giá trị. Tuy nhiên khi tôi đóng cửa sổ bộ nhớ cache biến mất. Có lợi ích gì khi sử dụng phiên này không?
Đây là mã của tôi:
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();
}
Xin chào HttpRuntime.Cache ["access_token"] hiển thị với tất cả người dùng? Đây là cách nó được viết trong hướng dẫn, đây sẽ là một lỗ hổng bảo mật rất lớn sau đó! – Darren
Phiên cũng là duy nhất cho mỗi chuỗi công nhân theo http://stackoverflow.com/questions/2151251/asp-net-web-garden-how-many-worker-processes-do-i-need – Jeff
@Jeff. Câu hỏi đó nói rằng với lưu trữ phiên InProc bình thường, 'Session' là duy nhất cho mỗi quy trình * *, không phải cho mỗi luồng * *. Sự khác biệt là rất lớn - ASP.NET luôn luôn sử dụng nhiều chủ đề, nhưng nhiều quá trình chỉ khi cấu hình như vậy. Với nhiều quy trình công nhân, 'Session' có thể được lưu trữ ngoài quá trình có thể. –