2012-09-06 14 views
5

मुझे अपवाद मिल रहा है: The type initializer for 'my class' threw an exception. मेरे वेब एप्लिकेशन को चलाने के बाद मेरे ब्राउज़र में। चूंकि यह दृश्य (.aspx) से उत्पन्न एक त्रुटि संदेश प्रतीत होता है, इसलिए इस त्रुटि के स्रोत के लिए मैं स्टैक ट्रेस या किसी भी लॉग को देख सकता हूं।डीबग कैसे करें "मेरी कक्षा के लिए प्रकार प्रारंभकर्ता" ने अपवाद फेंक दिया "

मैंने नेट के चारों ओर थोड़ा सा पढ़ा है और डीबगिंग के लिए एक समाधान TypeInitializationException फेंकना है और फिर गलत क्या पता लगाने के लिए आंतरिक अपवाद को देख रहा है। मैं यह कैसे कर सकता हूं जब मुझे नहीं पता कि कोशिश/पकड़ के साथ कोड को घेरना है?

+0

'मेरी कक्षा' के निर्माताओं में एक ब्रेकपाइंट सेट करें? – Frobzig

+0

क्या आपके पास स्थिर कंस्ट्रक्टर है? या आप कक्षा में किसी भी स्थिर चर का उपयोग करते हैं? वास्तव में – code4life

उत्तर

11

यह एक खराब स्थैतिक कन्स्ट्रक्टर के कारण हो सकता है, या स्थैतिक गुण/फ़ील्ड के खराब इनलाइन प्रारंभ के कारण हो सकता है। उदाहरण के लिए:

class A 
{ 
    static A() 
    { 
     //buggy code here 
    } 
    static SomeField f = new ThisClassThrowsWhenConstructed(); // <-- or here 
} 
1

यह अपवाद फेंक दिया गया है जब 'मेरी कक्षा' के स्थिर निर्माता क्रैश हो जाते हैं। कृपया अपना ब्रेकपॉइंट रखें।

+0

, कन्स्ट्रक्टर को कभी भी हिट नहीं किया जा रहा था क्योंकि समस्या एक स्थिर वैश्विक चर सेट के साथ web.config में एक गैर-मौजूदा पैरामीटर कुंजी के साथ थी। मैंने लाइन हटा दी और अब यह काम करता है ... –

+0

हां यह संभव है क्योंकि स्थैतिक (और स्थैतिक भी नहीं) परिवर्तनीय इनलाइन असाइनमेंट सी # कंपाइलर द्वारा कन्स्ट्रक्टर में संकलित किए जाते हैं। यह आपकी स्थिति बताता है। @ स्पेंडर का उत्तर यह उल्लेख करता है। –

+0

मुझे लगता है कि ऐसा इसलिए है क्योंकि स्थिर स्थिर इनलाइन असाइनमेंट को अलग-अलग निष्पादित किया जाता है अगर इसे इनलाइन असाइन नहीं किया गया हो ... –

0

ऐसा कुछ है जो कक्षा के आपके स्थिर निर्माता में गलत होता है, और उस त्रुटि को फेंकने के बजाय, CLRTypeInitializationException फेंक देगा।

2

अंततः मुझे इस समस्या का कारण मिला मेरी परियोजना की AppConfig सेटिंग्स। हां, मेरे पास दो सी # परियोजनाएं हैं, प्रोजेक्ट 1 और प्रोजेक्ट 2

Project1 है स्टेटिक वर्ग MyDetails

public static MyDetails 
{ 
    public static int _LogLevel = Int32.Parse(ConfigurationManager.AppSettings["LogLevel"]) 

    public static GetData() 
    { 
    ----code---- 
    ----code---- 
    } 
} 

मैं) Project1

में appConfig सेटिंग्स
<appSettings> 
    <add key="LogLevel" value="5"/> 
</appSettings> 

समारोह MyDetails.GetData (से बुलाया जा रहा है निम्नलिखित है शामिल प्रोजेक्ट 2 जो प्रोजेक्ट है मैं अब डिबगिंग कर रहा हूं। के बाद से Project2 लक्ष्य परियोजना है, लाइन ConfigurationManager.AppSettings [ "LogLevel"]Project2 से LogLevel की स्थापना को पढ़ने के लिए कोशिश करेंगे। लेकिन लॉगलेवल सेटिंग केवल प्रोजेक्ट 1 में उपलब्ध है। इसलिए, हमें प्रोजेक्ट 2 में ऐप्ससेटिंग जोड़ने की आवश्यकता है।

मुद्दा एक अपवाद फेंक दिया के लिए प्रकार प्रारंभकर्ता की appConfig Project2 में folowing appSettings जोड़ने के बाद हल किया गया है,

<appSettings> 
    <add key="LogLevel" value="5"/> 
</appSettings> 
संबंधित मुद्दे

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