私は、値を格納するHttpRuntime.Cacheを使用していくつかのコードを使用しています。しかし、ウィンドウを閉じると、キャッシュが消えてしまいます。これをセッション以上に使用することに利点はありますか?ここで
は私のコードです:
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();
}
こんにちはHttpRuntime.Cache ["access_token"]はすべてのユーザーに表示されますか?これはチュートリアルで書かれた方法ですが、これは非常に大きなセキュリティ上の脆弱性になります! – Darren
セッションは、http://stackoverflow.com/questions/2151251/asp-net-web-garden-how-many-worker-processes-do-i-needに従って、ワーカースレッドごとに一意です。 – Jeff
@Jeff。その質問は、通常のInProcセッションストレージでは、 'Session'は* thread *ではなく、ワーカー*プロセス*で一意であると述べています。違いは巨大です - ASP.NETは常に多くのスレッドを使用しますが、設定されている場合のみ多くのプロセスが使用されます。複数のワーカープロセスでは、 'Session'はおそらく可能なプロセス外に格納されるべきです。 –