5

tl; डॉ:MvcSiteMapProvider से मेनू कभी कभी ही प्रस्तुत करना करने में विफल रहता के बाद एक आवेदन ऑनलाइन वापस आता है, भले ही कोड रन और मेनू एक पृष्ठ ताज़ा के बाद बना देता है।MvcSiteMapProvider पृष्ठ प्रस्तुत करने, कैश समस्या पर तैयार नहीं है?

मैं एक ASP.NET MVC 3 परियोजना में MvcSiteMapProvider उपयोग कर रहा हूँ, और कभी कभी ऑनलाइन करने के लिए ऑफ़लाइन से एप्लिकेशन स्विचिंग मेनू कुछ भी नहीं दिखाए जाएंगे (सर्वर के रूट में एक एक App_Offline.htm फ़ाइल डालने और इसे हटाने के द्वारा) के बाद जब तक पृष्ठ ताज़ा नहीं हो जाता है।

मैं डेटाबेस से मेनू आइटम पूछने के लिए एक कस्टम डायनामिक नोडप्रोवाइडर का उपयोग कर रहा हूं, और फिर मेनू प्रस्तुत करता हूं। डिबगिंग करते समय, मैं देख सकता हूं कि यह कोड वास्तव में पृष्ठ लोड से पहले चल रहा है, लेकिन पृष्ठ पर कोई मेनू प्रस्तुत नहीं किया गया है। मेरे पास कैश कई घंटों तक सेट है, और कुछ क्रियाओं के बाद अमान्यता की अनुमति देने के लिए कस्टम कैश कुंजी का उपयोग कर रहा हूं।

दुर्भाग्य से मुझे लगातार यह पुन: उत्पन्न करने के लिए यह त्रुटि नहीं मिल सकती है। मैं कर सकता हूं हालांकि इसे अधिक बार पुन: पेश करने के लिए मिलता है यदि मैं डायनामिक नोडप्रोवाइडर के शीर्ष पर नींद जोड़ता हूं - यह 30+ सेकेंड की नींद के साथ 60-70% समय में विफल हो जाएगा। मेरा सबसे अच्छा अनुमान यह है कि इसे कैशिंग तंत्र के साथ करना है क्योंकि पर मेरी कैश अवधि निर्धारित करने के लिए लगता है ताकि कोई समस्या न हो और मेनू हमेशा पॉप हो जाए। हालांकि, निश्चित रूप से कहना मुश्किल है, क्योंकि समस्या को पिन करना मुश्किल है। इसे 0 पर छोड़कर प्रदर्शन ड्रैग के कारण स्वीकार्य समाधान नहीं होगा।

इस समस्या का मूल कारण क्या हो सकता है? क्या किसी ने इस व्यवहार को पहले या कामकाज देखा है?

उत्तर

2

एमवीसीसाइटमैपप्रोवाइडर समय-समय पर एएसपी.नेट साइटमैपप्रोवाइडर के थ्रेडिंग मॉडल द्वारा काटा जाता है, खासकर जब बड़ी साइटमैप परिभाषाएं होती हैं। वर्तमान में इस व्यवहार के लिए कोई कामकाज नहीं है, लेकिन मैं भारी परिस्थितियों में इसे अधिक स्थिर बनाने के लिए एक पुनर्लेख (और एएसपी.नेट साइटमैपप्रोवायर निर्भरता को कुचलने) की योजना बना रहा हूं।

+0

मैं फिर से लिखने की उम्मीद करूँगा! – Joshua

+0

2013 की शुरुआत में इसे शुरू करने की योजना है। और अभी के लिए, मैं शाप दे रहा हूं कि मैंने "अंतर्निहित लाइब्रेरी" मार्ग नहीं लिया। – maartenba

+0

यह इस मुद्दे से संबंधित है कि कभी-कभी मेनू गलत नोड्स प्रस्तुत करता है? – 360Airwalk

1

MvcSiteMapProvider v4 जारी किया गया है, और available on NuGet है।

यह अपने स्वयं के कैश तंत्र का उपयोग करता है जो more configurable और more extensible दोनों पहले की तुलना में है। अब तक v4 में मेन्यू गायब होने या अन्य अजीब पहले-अनुरोध-केवल मुद्दों की कोई रिपोर्ट नहीं मिली है।

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