2010-11-09 16 views
5

मैं यहाँ क्या गलत कर रहा हूं या मैं क्या नहीं कर रहा हूं?"CacheFactory.GetCacheManager();" तक पहुंचने का प्रयास करते समय "Microsoft.Practices.EnterpriseLibrary.Caching" में क्या गलत है?

System.Threading.SynchronizationLockException हुई संदेश = वस्तु तुल्यकालन विधि से बुलाया गया था: थ्रो इस अपवाद

 private static ICacheManager GetCacheManager() 
    { 
     try 
     {     
      return CacheFactory.GetCacheManager(); 
     } 
     catch (SynchronizationLockException ex) 
     { 
      EventLogHelper.WriteError(ex); 
     } 
     catch (ConfigurationException ex) 
     { 
      EventLogHelper.WriteError(ex); 
     } 
     return null; 
    } 

डिबगर हिट इसे वापस जब (मैं एक .NET 4.0 WCF सेवा में इस कोड का उपयोग कर रहा) कोड का एक अनसंक्रनाइज़ ब्लॉक। स्रोत = Microsoft.Practices.Unity StackTrace: Microsoft.Practices.Unity.SynchronizedLifetimeManager.TryExit() पर ई में: \ बनाता है \ एकता \ UnityTemp \ संकलित \ एकता \ एकता \ src \ लाइफटाइम \ SynchronizedLifetimeManager.cs: लाइन 109 इनर एक्सेप्शन:

क्या यह एंटरप्राइज़ लाइब्रेरी में एक बग है?

उत्तर

0

मुझे डब्ल्यूसीएफ सेवा में डेटाबेस बनाने का प्रयास करते समय भी वही त्रुटि मिलती है। (Entlib 5.0, .net 4,0)

Database db = DatabaseFactory.CreateDatabase(); 

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

8

समस्या वास्तव में कई एंटरप्राइज़ लाइब्रेरी ब्लॉक में मौजूद है। यूनिटी लागू होने के तरीके के साथ इसका कुछ संबंध है। वास्तविक समस्या यह नहीं है कि कोड स्वयं गलत है। अपवाद पकड़ लिया गया है, लेकिन डीबगर उस तथ्य को अनदेखा कर रहा है।

समस्या यहाँ वर्णित है:

दुर्भाग्य से, वहाँ बहुत आप इस बग से बचने के लिए क्या कर सकते हैं नहीं है। यह निश्चित रूप से अच्छा होगा अगर पैटर्न & प्रैक्टिस टीम को इस समस्या को हल करने में अधिक पुनरावृत्ति होना चाहिए;)।

हैप्पी कोडिंग!

7

ऐसा लगता है कि एंटरप्राइज़ लाइब्रेरी यूनिटी ब्लॉक द्वारा अपवाद को आंतरिक रूप से फेंक दिया गया है, हालांकि इसे भी संभाला जाता है। जब तक मुझे एहसास हुआ कि मैंने सीएलआर अपवाद के लिए अपवाद फेंक दिया है, तब तक मुझे यह सुनना पड़ा जब तक मुझे एहसास नहीं हुआ।

डीबग -> अपवाद

Unticking इस जब अपवाद फेंक दिया जाता है को तोड़ने से डिबगर बंद कर दिया।

0

मुझे एंटीलिब का उपयोग करने वाले पुराने प्रोग्राम में सुविधा जोड़ने के दौरान इसका सामना करना पड़ा। डीबगर अपवाद को बंद करना एक हैक की तरह महसूस किया। वीएस 2015 में, टूल्स | विकल्प | डिबगिंग | बस मेरे कोड विकल्प सक्षम करें मेरे लिए काम किया।

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

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