हमारे डब्ल्यूएफ 4 वर्कफ़्लो सेवा में, हम यथासंभव मजबूत होने की कोशिश करते हैं। हम जो चीजें करते हैं उनमें से एक हैंडलरर और प्रोवाइडफॉल्ट (IErrorhandler) के अंदर त्रुटियों को लॉग करना है। प्रलेखन राज्यों स्पष्ट रूप से है कि HandleError प्रवेश करने के लिए सही जगह होगी, लेकिन मैं कुछ अजीब बातें होती हैं देखें:हैंडलरर बनाम वर्कफ़्लो सेवा में प्रोवाइडफॉल्ट असंगतता, कैसे संभालें?
मैं कुछ त्रुटियां हैं जिन्हें केवल ProvideFault को गति प्रदान, लेकिन कभी HandleError, एक उदाहरण था देखें:
सिस्टम.NullReferenceException: ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है। System.ServiceModel.Activities.Dispatcher.DurableInstanceManager.GetInstanceAsyncResult.GetInstance() पर System.ServiceModel.Activities.Dispatcher.DurableInstanceManager.GetInstanceAsyncResult..ctor पर
वहाँ भी कुछ त्रुटियां हैं जिन्हें केवल गति प्रदान HandleError , लेकिन ProvideFault कभी नहीं, एक उदाहरण था:
सिस्टम.ServiceModel.CommunicationException: पाइप से पढ़ने में त्रुटि हुई: पाइप समाप्त हो गया है। (109, 0x6d)। System.ServiceModel.Channels.PipeConnection.Read पर (बाइट [] बफर, Int32 ऑफसेट, Int32 आकार, TimeSpan का समय समाप्त) System.ServiceModel.Channels.SessionConnectionReader.Receive पर (TimeSpan टाइमआउट)
अंत में देखते हैं त्रुटियां जो दोनों, पहले ProvideFault और फिर हैंडलरर (पृष्ठभूमि थ्रेड पर)
यदि संभव हो, तो मैं भी संबंधित आने वाले संदेश को लॉग करना चाहता हूं। मैं OperationContext.Current.RequestContext.RequestMessage.ToString() यह आमतौर पर केवल ProvideFault में काम करता है, HandleError में हम RequestContext किसी भी अधिक
तो मेरी निष्कर्ष था, सभी लॉग इन करने की जरूरत नहीं है के साथ ऐसा कर त्रुटियां, मुझे दोनों तरीकों से लॉग इन करना होगा। लेकिन इससे 3 डुप्लिकेट लॉग प्रविष्टियों की वजह होती है, 3 ..
मेरा वर्तमान कामकाज ProvideFault से अंतिम लॉग अपवाद को "याद रखना" था, और अगर यह अपवाद हैंडलरर में प्रवेश करता है तो इसे अनदेखा करें। मुझे बहुत साफ नहीं लगता है।
क्या कोई लॉग इन करने के लिए कोई बेहतर, विश्वसनीय तरीका है त्रुटियां जो डब्ल्यूएफ सेवा के अंदर हो सकती हैं?
और कृपया Logging exceptions in WCF with IErrorHandler inside HandleError or ProvideFault? पर इंगित न करें क्योंकि इससे कोई सहायता नहीं मिलती है।