2012-02-19 15 views
6

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

कभी-कभी, अनचाहे अपवाद एसिंक कॉलबैक पर होते हैं जिनके पास हमारे पास नहीं है। यह बदले में भूमिका असफल हो जाती है।

गैर Azure ASP.NET अनुप्रयोगों में, हम इस तरह aspnet.config में विरासत बिना क्रिया का अपवाद नीति को सक्षम करने से यह बच सकते हैं:

<configuration> 
    <runtime> 
    <legacyUnhandledExceptionPolicy enabled="1" /> 
    <runtime> 
<configuration> 

वहाँ Azure कार्यकर्ता के लिए भी ऐसा ही करने के लिए एक रास्ता है भूमिका? हमने इसे रोल प्रोजेक्ट के लिए app.config में रखने का प्रयास किया, लेकिन यह काम नहीं किया (क्योंकि हमें शायद इसे किसी भी तरह से WaWorkerHost.exe.config में प्राप्त करना होगा)।

हम AppDomain.CurrentDomain.UnhandledException, और Application.SetUnhandledExceptionMode, और How to catch an unhandled exception in Windows Azure (Worker) Role से अवगत हैं और ये हमारी समस्या का समाधान नहीं करते हैं।

+0

अभी भी एक उत्तर की तलाश है! कृपया – ionwarp

उत्तर

0

बस अपना धागा पढ़ें, क्योंकि मुझे वेबोल के साथ इसका अनुभव होता है। अब मैंने आपका कोड स्निपेट जोड़ा है और जांचें कि क्या मैं इस त्रुटि का फिर से अनुभव करूंगा। AppDomain क्लास के बारे में कुछ शोध किया: http://msdn.microsoft.com/en-us/library/system.appdomain.aspx। वास्तव में, मैं अनचाहे अपवाद नीति की खोज कर रहा था लेकिन इसे नहीं मिला। लेकिन मुझे "UnhandledException" घटना मिली http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

लेकिन आपने लिखा यह काम नहीं करता है। क्योंकि यह मुझे बाद में भी मार देगा - मैं एक अजीब कार्यकर्ता भूमिका में तीसरे पक्ष के ओपन सोर्स घटक चलाऊंगा - मैंने कुछ शोध किया था।

मैं तीसरे पेरी कोड के लिए एक नया ऐपडोमेन बनाने की कोशिश करूंगा - और यदि कोई अपवाद होता है, तो यह नए बनाए गए ऐपडोमेन को क्रैश/अनलोड करेगा और वर्तमान में मैं कोड चलाऊंगा। दूसरा समाधान शायद एक नई प्रक्रिया, जो मुझे लगता है कि अधिक काम है।

संपादित करें: मैंने इस विषय पर फिर से विचार किया: संस्करण 2.0 में इसे थ्रेड (मुख्य धागा नहीं) कक्षा पुस्तकालय में त्रुटि का अनुभव करने के लिए एप्लिकेशन डोमेन को फाड़ने के लिए पेश किया गया था। ऐसा लगता है कि यहां तक ​​कि एक अलग एप्लीकेशनडोमेन भी मदद नहीं करेगा। जैसा कि मैंने समझा है कि इस डिज़ाइन को पुस्तकालय स्तर पर कैप्चर अपवादों द्वारा पुस्तकालयों में छिपी हुई त्रुटियों को डीबग करने में मदद करनी चाहिए और उन्हें उचित तरीके से संभालना चाहिए। लेकिन मुझे क्या परेशान करता है - क्या होता है यदि हम तीसरे पक्ष के वर्ग पुस्तकालयों का उपयोग करते हैं जिन पर हमारा कोई नियंत्रण नहीं है? तो ऐसा लगता है कि अगर हम विक्रेता के लिए जरूरी समय में हल करने के लिए हमारी समस्या छोटी है तो हम अटक गए हैं।

+0

मार्क, यदि संभव हो तो मैं एक बेहतर उत्तर की तलाश कर रहा हूं, जिसे एपडोमेन प्रबंधित करने की आवश्यकता नहीं है (यह हमारे लिए फंसे होने पर एपडोमेन राज्य खोने की इच्छा नहीं है), या अपनी खुद की प्रक्रिया बना रहा है। – ionwarp

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