में प्रोग्रामिक रूप से डब्ल्यूसीएफ टाइमआउट सेट करें मैं सर्वर और क्लाइंट (दोनों सी # में लिखे गए) के बीच कमांड में डब्ल्यूसीएफ का उपयोग कर रहा हूं।डीबग मोड
रिलीज मोड में, टाइमआउट को ~ 20 सेकंड पर सेट किया जाना चाहिए, लेकिन डीबग मोड में मैं उन्हें उच्च मान पर सेट करना चाहता हूं ताकि मैं टाइमआउट के बिना अपने कोड में डीबग/चरण कर सकूं।
मुझे पता है कि मैं app.config फ़ाइल को संशोधित करके टाइमआउट बदल सकता हूं। हालांकि, मेरे पास दो अलग-अलग बाइंडिंग और प्रत्येक में 4 बार मूल्य हैं इसलिए मुझे कई स्थानों में बदलना होगा, और इसे भूलना आसान होगा।
इसे हल करने के लिए, मैं अपने कोड में एक छोटा #if DEBUG-section रखना चाहता हूं जो प्रोग्रामेटिक रूप से टाइमआउट मानों को 1 घंटे तक बदल देता है।
मैं यह करने के लिए निम्न कोड का उपयोग करने की कोशिश की:
Configuration configuration =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ServiceModelSectionGroup serviceModel =
ServiceModelSectionGroup.GetSectionGroup(configuration);
BindingsSection bindings = serviceModel.Bindings;
foreach (var configuredBinding in bindings.WSHttpBinding.ConfiguredBindings)
{
configuredBinding.CloseTimeout = new TimeSpan(0, 30, 0);
configuredBinding.OpenTimeout = new TimeSpan(0, 30, 0);
लेकिन * टाइमआउट गुण केवल पढ़ने के लिए कर रहे हैं तो मैं एक संकलन त्रुटि मिलती है।
मुझे प्रोग्रामिंग से स्क्रैच से बाइंडिंग बनाने के विचार का शौक नहीं है। यदि मैं app.config में कुछ विशेषताओं को बदलता हूं, तो मुझे यह सुनिश्चित करने के लिए कोड में एक ही परिवर्तन करना याद रखना होगा कि डीबग-व्यवहार रिलीज-व्यवहार के समान है (टाइमआउट को छोड़कर ..)
किसी को भी इसे संभालने के तरीके पर एक अच्छी युक्ति है?
एक 'Client' में, केवल समय समाप्ति ज्यादातर लोगों कभी आवश्यकता होगी' sendTimeout' https://social.msdn.microsoft.com/Forums/vstudio/en- अमेरिका/84551e45-19a2-4d0d-bcc0-516a4041943d/explaination के- अलग-टाइमआउट-प्रकार –