2013-10-16 6 views
5

मेरे पास .NET 4.0 वेब प्रोजेक्ट है और async/await सुविधा का समर्थन करने के लिए Microsoft.Bcl.Async का उपयोग करें। मैंने देखा है कि उत्पादन पर्यावरण में आईआईएस कार्यकर्ता प्रक्रिया System.Runtime.CompilerServices.AsyncServices.<ThrowAsync>b__1() पर फेंक दिया गया है जो NullReferenceException के कारण लगातार क्रैश हो जाती है। ऐसा लगता है कि अपवाद को मेरे कोड में कुछ और जगह फेंक दिया गया है और AsyncServices.ThrowAsync() विधि पर पुनर्स्थापित किया गया है। दुर्भाग्यवश कोई भी अपवाद विवरण (मूल स्टैक ट्रेस समेत) खो गया है, इसलिए मुझे नहीं पता कि अपवाद को मूल रूप से कहाँ फेंक दिया गया है। इसके अलावा, मैंने AppDomain.CurrentDomain.UnhandledException और TaskScheduler.UnobservedTaskException ईवेंट का उपयोग करके इस अपवाद को पकड़ने का प्रयास किया है लेकिन इन घटनाओं को कभी नहीं निकाल दिया जाता है।NullReferenceException.Runtime.CompilerServices.AsyncServices। <ThrowAsync> b__1()

सभी त्रुटि विवरण मैं (इवेंटलॉग से) है के होते हैं:

Exception: System.NullReferenceException 

Message: Object reference not set to an instance of an object. 

StackTrace: at System.Runtime.CompilerServices.AsyncServices.<ThrowAsync>b__1(Object state) 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 
    at System.Threading.ThreadPoolWorkQueue.Dispatch() 

मेरी कोड में कोई स्पष्ट स्थानों है कि किसी भी उत्पादन के बिना यह अपवाद है और इस प्रक्रिया दुर्घटनाओं फेंक कर सकते हैं कर रहे हैं।

मैं इसे कैसे डिबग कर सकता हूं? क्या इस अपवाद के स्रोत को खोजने के कोई तरीके हैं?

+0

यदि आप 'शून्य' कार्य 'का इंतजार कर रहे हैं तो यह हो सकता है। – SLaks

+0

क्या यह अपवाद आईआईएस 8.5 दुर्घटना का कारण बन सकता है? – dizel3d

उत्तर

3

आप आईआईएस पर Microsoft.Bcl.Async का उपयोग नहीं कर सकते हैं; यह entirely unsupported है। माफ़ कीजिये।

संदर्भित ब्लॉग पोस्ट से संक्षेप में: async के व्यवहार/इंतजार ASP.NET में अपरिभाषित जब तक aspnet:UseTaskFriendlySynchronizationContext एप्लिकेशन सेटिंग true पर सेट हो या httpRuntime.targetFramework विशेषता 4.5 पर सेट किया जाता है।

और वे विकल्प ASP.NET 4 रनटाइम को प्रभावित नहीं करते हैं।

+0

मैंने अपनी परियोजना को .NET4.5 पर माइग्रेट कर दिया है और यह समस्या को ठीक करने लगता है। आपका बहुत बहुत धन्यवाद! – Albert

+0

@ स्टीफन मुझे विंडोज सेवा प्रोजेक्ट में एक ही समस्या मिल रही है। अन्य सभी स्थितियां समान हैं। फिर भी। .NET 4.5 को अपडेट किए बिना बेहतर स्टैकट्रेस इंफोस प्राप्त करने का कोई तरीका है। – rudimenter

+0

@ रुडिमेंटर: आप मेरी [AsyncDiagnostics लाइब्रेरी] (http://www.nuget.org/packages/Nito.AsyncEx.AsyncDiagnostics/) को आजमा सकते हैं। –

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