2009-06-11 16 views
6

मैं प्रत्येक डब्ल्यूसीएफ टाइमआउट सेटिंग के प्रभाव का परीक्षण कैसे कर सकता हूं? मैं यह सुनिश्चित करना चाहता हूं कि मैं अच्छे मूल्यों का चयन करूं और मैं यह भी सुनिश्चित करना चाहता हूं कि मेरा अपवाद हैंडलिंग कोड ठोस है।डब्ल्यूसीएफ टाइमआउट सेटिंग्स का परीक्षण कैसे करें?

मैंने टाइमआउट सेटिंग्स का परीक्षण करने के लिए क्लाइंट प्रोग्राम और सर्वर डब्ल्यूसीएफ सेवा बनाई है। मेरी सेवा कार्यान्वयन में, मैंने एक थ्रेड जोड़ा। नींद (5000)। क्लाइंट-साइड पर, एकमात्र सेटिंग जो टाइमआउट होने का कारण बनती है, भेजना टाइमआउट है।

कोई फर्क नहीं पड़ता कि मैं अन्य सभी सेटिंग्स में किस मूल्य का उपयोग करता हूं, टाइमआउट कभी नहीं होता है। मैं अन्य सभी सेटिंग्स का परीक्षण कैसे करूं?

यहां सेटिंग्स हैं जिन्हें मैं परीक्षण करना चाहता हूं: sendTimeout, getTimeout, closeTimeout, openTimeout और निष्क्रियता टाइमआउट (विश्वसनीय सत्रों में)।

संपादित करें 1 9बीबी 200: यह संपादन सिर्फ यह इंगित करने के लिए है कि मुझे अभी भी डब्ल्यूसीएफ टाइमआउट सेटिंग्स का परीक्षण करने का कोई तरीका नहीं मिला है।

उत्तर

1

कोई पूरा उत्तर नहीं है, लेकिन नीचे दिए गए टाइमआउट मानों की व्याख्या सहायक हो सकती है।

http://social.msdn.microsoft.com/forums/en-US/wcf/thread/84551e45-19a2-4d0d-bcc0-516a4041943d/

+0

धन्यवाद ब्रायन, यह वास्तव में एक उपयोगी लिंक है। यह टाइमआउट का परीक्षण करने के तरीके पर मेरे प्रश्न का उत्तर नहीं देता है लेकिन फिर भी यह मदद करेगा। – Sylvain

1

आप सही स्थान पर देखो, तो आप चैनल घटनाओं पाने और अपने परीक्षण को संशोधित उन्हें के बारे में पता हो सकता है। कनेक्ट डब्ल्यूसीएफ सेवा पर एक बूलियन विधि है। मैंने async विधियों का उपयोग कर प्रॉक्सी क्लास उत्पन्न करने के लिए svcutil का उपयोग किया।

private StateManagerClient _stateManagerClient; 
private InstanceContext _site; 

public New() 
{ 
    _site = new InstanceContext(this); 
    _serviceClient = new ServiceClient(); 
    _serviceClient.ConnectCompleted += ServiceClient_ConnectCompleted; 
} 

private void ServiceClient_ConnectCompleted(object sender, ConnectCompletedEventArgs e) 
{ 
    //Bind to the channel events 
    foreach (IChannel a in _site.OutgoingChannels) { 
        a.Opened += Channel_Opened; 
        a.Faulted += Channel_Faulted; 
        a.Closing += Channel_Closing; 
        a.Closed += Channel_Closed; 
    } 
} 

private void Channel_Opened(object sender, EventArgs e) 
{ 
    
} 

private void Channel_Faulted(object sender, EventArgs e) 
{ 
    
} 

private void Channel_Closing(object sender, EventArgs e) 
{ 
    
} 

private void Channel_Closed(object sender, EventArgs e) 
{ 

} 

मुझे आशा है कि यह आपको कुछ मूल्य प्रदान करे।

+0

हाय क्रिस, आपके उत्तरों के लिए धन्यवाद। यह चैनल घटनाओं को ट्रैक करने के लिए उपयोगी है, लेकिन यह मुझे टाइमआउट अपवादों का कारण बनाने में मदद नहीं करता है। मुझे यह साबित करने के लिए वास्तव में टाइमआउट अपवादों का कारण बनना होगा कि मेरा त्रुटि प्रबंधन कोड सही है। – Sylvain

+0

मुझे किसी भी कोड से अवगत नहीं है जो टाइमआउट को मजबूर कर सकता है लेकिन आप ट्रिगर करना आसान बनाने के लिए अपने मूल्यों को छोड़ सकते हैं। –

+1

हाय क्रिस, मैंने वह किया; मैंने सभी पक्षों (क्लाइंट/सेवा) पर सभी टाइमआउट मानों को 1 सेकंड तक गिरा दिया। एकमात्र सेटिंग जो प्रभावी है क्लाइंट द्वारा उठाई गई टाइमटाइम भेजती है। अन्य सभी टाइमआउट सेटिंग्स अप्रभावी हैं, यही कारण है कि मैं इस प्रश्न को पोस्ट कर रहा हूं। मुझे अच्छे मूल्यों का चयन कैसे करना चाहिए और यह सुनिश्चित करना है कि मेरे पास समय-समय पर हैंडलिंग कोड अच्छा है यदि नियंत्रित वातावरण में प्रत्येक प्रकार के टाइमआउट को पुन: पेश करने का कोई तरीका नहीं है? – Sylvain

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