2009-12-31 10 views
7

पर पुनरारंभ करें मेरे पास एक GUI क्लाइंट है जो एक सर्वर बॉक्स पर Windows सेवा के रूप में होस्ट की गई WCF सेवाओं के विरुद्ध चल रहा है। डब्ल्यूसीएफ सेवा पेर्कल इंस्टेंस कॉन्टेक्स्टमोड में चल रही है, और ग्राहक के पास क्लाइंट क्लाइंट का सिंगलटन इंस्टेंस है और मैं प्रत्येक कॉल पर सिंगलटन को पुन: स्थापित करने से बचना चाहता हूं क्योंकि यह मेरे पास कई असीमित कॉलों के लिए जीवन कठिन बनाता है।डब्ल्यूसीएफ सेवा से निपटने के लिए क्लाइंट-साइड

इस चैनल में कोई लंबे समय तक आउटपुट के रूप में संदेश भेजने के लिए इस्तेमाल किया जा सकता:

मेरे लिए समस्या नहीं है, के बाद Windows सेवा पुन: प्रारंभ होने, हर ग्राहक एक कॉल इसे इस तरह एक अपवाद संदेश हो जाता है बनाता है सर्वर द्वारा शुरू किए गए शटडाउन के कारण सत्र स्वतः बंद था। या तो DispatchRuntime.AutomaticInputSessionShutdown को गलत पर सेट करके ऑटो-क्लोज़ अक्षम करें, या दूरस्थ सर्वर के साथ शटडाउन प्रोटोकॉल को संशोधित करने पर विचार करें।

इस के आसपास जाने का सबसे अच्छा तरीका क्या है? मैं सेवा क्लाइंट को सभी कॉलों के चारों ओर ट्राइक-कैच क्लोज़ डाल सकता हूं और संचार अपवादों पर सिंगलटन इंस्टेंस को दोबारा स्थापित कर सकता हूं लेकिन इसमें बहुत सारे बॉयलरप्लेट कोड शामिल होंगे ..

उत्तर

9

सबसे अच्छा सर्वर पर अपवादों से बचने के लिए सबसे अच्छा होगा साथ में। यदि एक डब्ल्यूसीएफ सर्वर एक अपवाद का सामना करता है जिसे पकड़ा और संभाला नहीं जा रहा है, तो यह चैनल को "गलती" करेगा, इसे बेकार प्रदान करेगा।

सर्वर की तरफ, आप IErrorHandler interface को कार्यान्वित कर सकते हैं और .NET अपवादों को पकड़ सकते हैं, उन्हें एसओएपी दोषों में बदल सकते हैं जो चैनल को दोष के बिना ग्राहक को अधिक सुन्दर तरीके से सौंपे जाएंगे।

इस तरह, आप सर्वर पर सभी .NET अपवादों को पकड़ सकते हैं, और उन्हें इंटरऑपरेबल एसओएपी दोषों में परिवर्तित कर सकते हैं जो इन समस्याओं का कारण नहीं बनेंगे।

अधिक जानकारी के लिए देखें:

+0

धन्यवाद, इनके माध्यम से पढ़ें और वे एक बड़ी मदद – theburningmonk

+5

इस प्रोटोकॉल अपवाद के साथ समस्या यह है कि चैनल स्थिति अभी भी "खुली" है, न कि "दोषपूर्ण", और यह ध्यान में रखना मुश्किल है कि यह वास्तव में अनुपयोगी है। –

+2

और जब कोई आईआईएस में डब्ल्यूसीएफ सेवा होस्ट की जाती है और अपवाद के कारण पुनरारंभ करने की बजाए, तब से क्या किया जाता है, फिर से तैनात किए जाने के लिए सेवा को पुनरारंभ किया जाता है? – alimbada

0

आप इस पर एक नज़र डालें शायद कि बॉयलरप्लेट कोड के कुछ से बचने के लिए कर सकते हैं:

http://wcfproxygenerator.codeplex.com

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