2009-03-20 19 views
5

मैं डब्ल्यूसीएफ क्लाइंट डिस्कनेक्ट कैसे संभाल सकता हूं?WCF क्लाइंट डिस्कनेक्ट कैसे करें

मैं कॉलबैक की कोशिश की, लेकिन यह करने के लिए केवल उदाहरण के लिए एक "डिस्कनेक्ट" बटन का उपयोग करके काम करता है जब क्लाइंट डिस्कनेक्ट "स्पष्ट रूप से" लगता है।

मैं अपने सर्वर सूचना भेजता है जब क्लाइंट डिस्कनेक्ट हो गई, यहां तक ​​कि मैनुअल डिस्कनेक्ट या ग्राहक प्रक्रिया दुर्घटना पर चाहते हैं।

+0

आपका प्रश्न स्पष्ट नहीं है। क्या आप एक टाइमआउट पर फिर से कनेक्ट करने की कोशिश कर रहे हैं या मैन्युअल कनेक्ट/डिस्कनेक्ट कर रहे हैं? –

+0

मैं अपने सर्वर सूचना भेजता है जब क्लाइंट डिस्कनेक्ट हो गई, यहां तक ​​कि मैनुअल डिस्कनेक्ट या ग्राहक प्रक्रिया दुर्घटना पर चाहते –

उत्तर

0

क्यों एक पाश जहां ग्राहक बस सेवा हर दूसरे या तो और फिर एक कॉलबैक कर पिंग्स नहीं। जब कॉलबैक विफल हो जाता है तो क्लाइंट डिस्कनेक्ट हो जाता है।

0

मतदान पर एक भिन्नता संदेश का उपयोग करना होगा। ग्राहक "मैं यहां हूं" संदेश पोस्ट कर सकता हूं और फिर डिस्कनेक्ट होने पर संदेश हटा सकता हूं। सर्वर डिस्कनेक्ट के लिए कतार की निगरानी कर सकता है। एक और विकल्प BOSH, द्वि-दिशात्मक HTTP संचार का उपयोग करना है। यह वेब चैट क्लाइंट का उपयोग करता है।

7

उपयोग OperationContext.Current.Channel.Faulted और OperationContext.Current.Channel.Closed घटनाओं।

इन घटनाओं निकाल दिया जाता है जब ग्राहक किसी भी कारण से काट दिया गया है।

+0

OperationContext.Current.Channel.Closed घटना किसी भी समय मेरे लिए आग नहीं करता है ... मैं आग एक घटना चाहते हैं जब मैं क्लाइंट WinForm छोड़ दिया ... मैं डब्ल्यूसीएफ में wsDualHttp बाइंडिंग का उपयोग कर रहा हूँ। आप इस घटना का उपयोग कैसे करते हैं? – Oliboy50

0

मैं कहूँगा कि एक असामान्य तरीके से अगर वहाँ में ग्राहक डिस्कनेक्ट कोई रास्ता नहीं सुनिश्चित करें कि सर्वर है कि के बारे में पता हो जाएगा बनाने के लिए है। यह HTTP की तरह बहुत सुंदर है। अगर हम ब्राउज़र बंद करते हैं, तो एक बल छोड़ने के साथ कहें, ब्राउज़र ने सर्वर पर कुछ भी नहीं भेजा।

यह कई कारणों में से एक है कि हमारे पास सत्र समय समाप्ति क्यों है। क्लाइंट को डिस्कनेक्ट करने और सर्वर की तरफ से साफ करने के लिए जो कुछ भी इस्तेमाल किया जा रहा है, यदि कोई क्लाइंट कुछ गलत करता है (उदाहरण के लिए बहुत लंबा ऑपरेशन) या सर्वर को बताए बिना डिस्कनेक्ट करता है।

0
if (HttpContext.Current.Response.IsClientConnected == false) 
{ 
..} 

यह मदद कर सकते हैं

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