2010-11-15 22 views
7

के लिए काम नहीं कर रहा है मैं लॉगिन सिस्टम के साथ एक वेब साइट के लिए आउटपुट कैश का उपयोग कर रहा हूं। मेरे पास वैश्विक पृष्ठ हैं जिन्हें हर उपयोगकर्ता द्वारा एक्सेस किया जा सकता है। ये पृष्ठ कैश किए गए हैं और एक मास्टर पेज का भी उपयोग करते हैं।VaryByCustom सत्र चर

<%@ OutputCache Duration="3600" VaryByParam="none" VaryByCustom="userid" %> 

मैं एक सत्र में उपयोगकर्ता लॉगिन विवरण संग्रहीत कर रहा हूं। मेरे Global.asax फ़ाइल यहाँ है:

public override string GetVaryByCustomString(HttpContext context, string arg) 
{ 
    string result = String.Empty; 
    if (arg == "userid") 
    { 
     object o = Session["UserID"]; 
     if (o != null) { result = o.ToString(); } 
    } 
    else { result = base.GetVaryByCustomString(context, arg); } 
    return result; 
} 

मैं मास्टर पृष्ठ जो प्रमाणीकृत उपयोगकर्ताओं के लिए दिख रहा है में एक पैनल है। जब कोई उपयोगकर्ता लॉग इन करता है और सार्वजनिक पृष्ठ देखता है तो एक अन्य अतिथि उपयोगकर्ता पृष्ठ ए पर प्रमाणीकृत उपयोगकर्ता पैनल भी देखता है। यदि अतिथि पहले पृष्ठ ए को देखता है तो प्रमाणित उपयोगकर्ता पृष्ठ ए 0 पर पैनल नहीं देखता है।

मेरे कोड का कौन सा हिस्सा गलत है? मैं पहली बार VaryByCustom का उपयोग कर रहा हूं।

संपादित

मैं इस तरह मेरी Global.asax संशोधित कर लिया है लेकिन कुछ भी पाठ फ़ाइल में लिखा है:

public override string GetVaryByCustomString(HttpContext context, string arg) 
{ 
    string result = String.Empty; 

    FileInfo t = new FileInfo(Server.MapPath("App_Data\\debug.txt")); 
    StreamWriter Tex = t.AppendText(); 
    Tex.WriteLine("GetVaryByCustomString: " + arg); 

    if (arg == "userid") 
    { 
     object o = Session["UserID"]; 
     if (o != null) { result = o.ToString(); } 

     Tex.WriteLine("Checked UserID: " + o + Tex.NewLine);    
    } 
    else { result = base.GetVaryByCustomString(context, arg); } 

    Tex.Close(); 

    return result; 
} 
+0

ठीक है, मैंने पाया है कि मैं वर्तमान सत्र चर का उपयोग नहीं कर सकता "सत्र राज्य इस संदर्भ में उपलब्ध नहीं है।"। इसे ठीक करने की कोशिश कर रहा है। –

उत्तर

0

मुझे लगता है कि शायद सत्र [ "उपयोगकर्ता id"] कुछ के लिए कारण हमेशा शून्य/या कुछ बार वापस लौटता है, भले ही उपयोगकर्ता प्रमाणीकृत हो।

डबल चेक यह है कि आप इसे इस फ़ंक्शन से पहले सेट करते हैं।

+0

मुझे लगता है कि सत्र चर बदल गया है, लेकिन समस्या है GetVaryByCustomString को ठीक से निकाल दिया/ठीक से काम नहीं किया जाता है मुझे लगता है कि –

+0

@ हसन गोरसोई हाँ कहीं समस्या है, लेकिन यदि फ़ंक्शन कहा जाता है, तो सत्र पैरामीटर सेट नहीं होता है। – Aristos

+1

@hasanGursoy यह जांचें http://www.aspmessageboard.com/showthread.php?t=174916 – Aristos

संबंधित मुद्दे