संभव डुप्लिकेट:
Cache v.s SessionHttpRuntime.Cache और सत्र के बीच क्या अंतर है?
मैं कुछ कोड एक मूल्य के स्टोर करने के लिए 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
@ जेफ। उस सवाल में कहा गया है कि सामान्य इनप्रोक सत्र भंडारण के साथ, 'सत्र' प्रति कार्यकर्ता * प्रक्रिया * अद्वितीय है, प्रति * थ्रेड * नहीं। अंतर बहुत बड़ा है - एएसपी.नेट हमेशा कई धागे का उपयोग करता है, लेकिन कॉन्फ़िगर किए जाने पर ही कई प्रक्रियाएं होती हैं। कई कार्यकर्ता प्रक्रियाओं के साथ, 'सत्र' शायद प्रक्रिया से बाहर संग्रहीत किया जाना चाहिए जो संभव है। –