मैं WCF सेवा पर 1 मिनट से बड़ा डिफ़ॉल्ट डिफ़ॉल्ट समय कैसे बढ़ाऊं?
मैं WCF सेवा पर 1 मिनट से बड़ा डिफ़ॉल्ट डिफ़ॉल्ट समय कैसे बढ़ाऊं?
जवाबों:
क्या आप सर्वर साइड या क्लाइंट साइड की बात कर रहे हैं?
एक क्लाइंट के लिए, आप एक बाइंडिंग तत्व के सेंड टाइमआउट विशेषता को समायोजित करना चाहेंगे । एक सेवा के लिए, आप एक बाइंडिंग एलेमनेंट के प्राप्त टाइमआउट विशेषता को समायोजित करना चाहेंगे ।
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="longTimeoutBinding"
receiveTimeout="00:10:00" sendTimeout="00:10:00">
<security mode="None"/>
</binding>
</netTcpBinding>
</bindings>
<services>
<service name="longTimeoutService"
behaviorConfiguration="longTimeoutBehavior">
<endpoint address="net.tcp://localhost/longtimeout/"
binding="netTcpBinding" bindingConfiguration="longTimeoutBinding" />
</service>
....
बेशक, आपको अपने वांछित समापन बिंदु को उस विशेष बंधन में मैप करना होगा।
receiveTimeout
सत्र आधारित बाइंडिंग के लिए आलस्य के सर्वर साइड को नियंत्रित करता है दृढ़ संकल्प पर। उदाहरण के लिए, सर्वर बेसिकएचटीपी बाइंडिंग के लिए इस सेटिंग का उपयोग नहीं करेगा। आपको WCF के लिए अपना स्वयं का सर्वर साइड प्रोसेसिंग टाइमआउट रोल करना होगा
विजुअल स्टूडियो 2008 (या यदि आपके पास सही WCF सामान स्थापित है) में टूल मेनू के तहत 'WCF सर्विस कॉन्फ़िगरेशन एडिटर' नामक एक विकल्प है।
वहां से आप क्लाइंट और सेवाओं दोनों के लिए बाध्यकारी विकल्प बदल सकते हैं, इनमें से एक विकल्प समय-आउट के लिए होगा।
अलग-अलग टाइमआउट का मतलब अलग-अलग चीजें हैं। जब आप क्लाइंट पर काम कर रहे हों .. तो आप ज्यादातर SendTimeout को देख रहे हों - इस संदर्भ को देखें - अद्भुत और प्रासंगिक विवरण: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread / 84551e45-19a2-4d0d-bcc0-516a4041943d /
आप दो तरीके चुन सकते हैं:
1) ग्राहक में कोड द्वारा
public static void Main()
{
Uri baseAddress = new Uri("http://localhost/MyServer/MyService");
try
{
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService));
WSHttpBinding binding = new WSHttpBinding();
binding.OpenTimeout = new TimeSpan(0, 10, 0);
binding.CloseTimeout = new TimeSpan(0, 10, 0);
binding.SendTimeout = new TimeSpan(0, 10, 0);
binding.ReceiveTimeout = new TimeSpan(0, 10, 0);
serviceHost.AddServiceEndpoint("ICalculator", binding, baseAddress);
serviceHost.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
}
catch (CommunicationException ex)
{
// Handle exception ...
}
}
2) एक वेब सर्वर में WebConfig द्वारा
<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding openTimeout="00:10:00"
closeTimeout="00:10:00"
sendTimeout="00:10:00"
receiveTimeout="00:10:00">
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
अधिक विवरण के लिए आधिकारिक दस्तावेज देखें