2009-12-29 13 views
6

किसी कारण से में काम बंद कर दिया है, निम्न पंक्ति मेरी ASP.NET MVC परियोजना में कुछ नहीं करता है:Debug.Assert() अपने प्रोजेक्ट

System.Diagnostics.Debug.Assert(false); 

मैं ट्रिपल जाँच की है कि मैं डीबग विन्यास का उपयोग कर रहा है और डीबग कॉन्फ़िगरेशन सेटिंग्स में "डीबग निरंतर परिभाषित करें" की जांच की जाती है।

मेरी इकाई परीक्षण परियोजना में भी यही समस्या होती है।

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

संपादित करें: मैं अपने प्रोजेक्ट में कई तीसरे पक्ष के मॉड्यूल का उपयोग कर रहा हूँ। क्या यह संभवत: रिलीज मोड में संकलित मॉड्यूल को संदर्भित करने के कारण हो सकता है?

+0

क्या आपने दो बार जांच की है कि आप रिलीज़ संस्करण नहीं चला रहे हैं? – ChrisF

+1

परावर्तक के साथ अपना डीएल/एक्सई कैसे खोलें और देखें कि वास्तव में कोड वास्तव में कोड में है या नहीं? और क्या आपकी असेंबली वास्तव में उस स्थान से भरी हुई है जो आपको लगता है? शायद एक और समय जांचें कि आप डीबग संस्करण का उपयोग कर रहे हैं। –

+0

@ChrisF: जैसा कि मैंने कहा, हाँ। तीन बार ... :-) –

उत्तर

0

चूंकि आप एएसपी.नेट एमवीसी के माध्यम से चल रहे हैं, तो क्या आपके वेब.कॉन्फिग में डीबग = झूठी हो सकती है जो समस्या पैदा कर रही है?

+0

दुर्भाग्य से नहीं। मैंने अभी अपना वेब.कॉन्फिग चेक किया है और शब्द डीबग केवल इस पंक्ति में है:

+0

यह भी देखें कि कॉन्फ़िगरेशन फ़ाइल में" system.diagnostics "अनुभाग है या नहीं। आप अपनी कॉन्फ़िगरेशन फ़ाइल में दावा बंद कर सकते हैं। –

+0

@Eric: सुझाव के लिए धन्यवाद, लेकिन मेरे web.config में "निदान" शब्द का उल्लेख नहीं किया गया है। –

6

एएसपी.Net सम्मिलन वीएस कंसोल में प्रदर्शित होता है जबकि आपका वेबपृष्ठ विजुअलस्टूडियो के माध्यम से प्रदर्शित होता है। यह थ्रेड को किसी संदेश बॉक्स को प्रदर्शित करने या प्रोग्रामिंग भाषा जैसे दावे लाइन में तोड़ने में बाधा नहीं डालता है।

1

प्राचीन प्रश्न लेकिन यदि आपके पास डिफ़ॉल्ट श्रोता परिभाषित नहीं है तो यह सामान्य रूप से एक संदेश संवाद प्रदर्शित नहीं करेगा। मैंने पुष्टि नहीं की है कि यह वास्तव में आग लगती है और सिर्फ खाया जाता है (मुझे संदेह है कि यह मामला है) या क्या यह बिल्कुल भी आग नहीं लगाता है।

लेकिन किसी भी तरह से यह संवाद नहीं दिखाएगा।

के लिए DefaultTraceListener

डॉक्स से जोर और विफल विधि के लिए संदेश बॉक्स के प्रदर्शन DefaultTraceListener की उपस्थिति पर निर्भर कहता है। यदि DefaultTraceListener श्रोताओं संग्रह में नहीं है, तो संदेश बॉक्स प्रदर्शित नहीं होता है।

DefaultTraceListener, तत्व द्वारा हटाया जा सकता तत्व द्वारा, या श्रोताओं संपत्ति पर साफ़ विधि को फोन करके (System.Diagnostics.Trace.Listeners.Clear())।

आप अपने श्रोताओं की जाँच करें और नीचे की तरह कुछ कोड का उपयोग करके प्रकार प्राप्त कर सकते हैं:

var listeners = new TraceListener[Debug.Listeners.Count]; 
Debug.Listeners.CopyTo(listeners, 0); 
foreach (var listener in listeners) { 
    Debug.WriteLine("Name : {0} of type : {1}", listener.Name, listener.GetType()); 
} 

आप नहीं है, तो एक "डिफ़ॉल्ट" कहा जाता है, Debug.Assert चुपचाप असफल हो जायेगी।

जहाँ तक विन्यास चला जाता है के रूप में, यह मानते हुए कि एक श्रोता नामित डिफ़ॉल्ट उपलब्ध है काम करेंगे:

<system.diagnostics> 
    <trace autoflush="false"> 
     <listeners> 
      <add name="bigEarsListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TracingInfo.log"/> 
     </listeners> 
    </trace> 
</system.diagnostics> 

इस रूप में काम करेंगे:

<system.diagnostics> 
    <trace autoflush="false"> 
     <listeners> 
     </listeners> 
    </trace> 
</system.diagnostics> 

यह मानते हुए एक श्रोता नामित डिफ़ॉल्ट उपलब्ध है काम करेंगे हम स्पष्ट रूप से हमारे डिफ़ॉल्ट को परिभाषित करते हैं:

<system.diagnostics> 
    <trace autoflush="false"> 
     <listeners> 
      <remove name="Default" /> 
      <add name="Default" type="System.Diagnostics.DefaultTraceListener" /> 
      <add name="bigEarsListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TracingInfo.log"/> 
     </listeners> 
    </trace> 
</system.diagnostics> 

यह WONT कार्य:

<system.diagnostics> 
    <trace autoflush="false"> 
     <listeners> 
      <remove name="Default" /> 
      <add name="bigEarsListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TracingInfo.log"/> 
     </listeners> 
    </trace> 
</system.diagnostics> 

आप अपने web.config में एक निदान अनुभाग फिर डिफ़ॉल्ट से हटाया जा सकता है हो रही है या ओवरराइड नहीं कुछ वी.एस. एक्सटेंशन आदि से है, तो यह अनुभाग जोड़ने के लिए इसे वापस अपेक्षित व्यवहार में लाना चाहिए नहीं है, तो।

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