हमारे पास एक डब्ल्यूसीएफ सेवा (बेसिक एचटीपी बाइंडिंग) है जो हमेशा 30 सेकंड के बाद विफल हो जाएगी। त्रुटि के बिना 30 सेकंड के तहत कॉल पूरा हो जाता है। 30 सेकंड से अधिक कुछ भी एक 502 खराब गेटवे अपवाद के साथ असफल हो जायेगी:डब्ल्यूसीएफ सेवा कॉल हमेशा 30 सेकंड के बाद विफल रहता है (502) खराब गेटवे
System.Net.WebException: The remote server returned an error: (502) Bad Gateway.
लेकिन अभी तक WCF कॉल पृष्ठभूमि में चलाने के लिए जारी है (और अंत में पूरा हो जाएगा)। हमने पुष्टि की है कि BasicHttp बाइंडिंग - बाध्यकारी - sendTimeout (web.config में) 30 सेकंड से अधिक है (वास्तव में 5 मिनट तक सेट)। हमने क्लाइंट और सर्वर दोनों पर इसकी पुष्टि की।
यहाँ पूर्ण स्टैक ट्रेस है:
System.ServiceModel.ProtocolException: The remote server returned an unexpected response: (502) Bad Gateway. ---> System.Net.WebException: The remote server returned an error: (502) Bad Gateway.
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
--- End of inner exception stack trace ---
Server stack trace:
at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException, ChannelBinding channelBinding)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
कोई भी विचार जहां इस 30 सेकंड "टाइमआउट" से आ रहा है या क्यों एक 502 खराब गेटवे त्रुटि दी है?
समाधान: हम आईआईएस 7 एप्लिकेशन अनुरोध रूटिंग मॉड्यूल का उपयोग कर रहे हैं जिसमें इसकी प्रॉक्सी सेटिंग्स हैं। प्रॉक्सी सेटिंग्स में 30 सेकंड का डिफ़ॉल्ट टाइमआउट होता है। 600 सेकंड (10 मिनट) तक इसे बढ़ाने से हमारी समस्या हल हो गई। खराब गेटवे त्रुटि पूरी तरह से सही नहीं है लेकिन डब्ल्यूसीएफ ट्रेस व्यूअर (उत्तर देखें) ने यह देखने में मदद की कि समस्या स्वयं सेवा नहीं थी बल्कि क्लाइंट और डब्ल्यूसीएफ सेवा के बीच एक मुद्दा था।
हमने क्लोजटाइमआउट, ओपनटाइमआउट बढ़ाने और 5 मिनट (क्लाइंट और सर्वर पर) प्राप्त करने का प्रयास किया है और अभी भी समस्या को देखते हैं। –
डब्ल्यूसीएफ सेवा ट्रेस व्यूअर की जानकारी के लिए धन्यवाद। मैंने इसे क्लाइंट और सर्वर दोनों पर एक ट्रेस इकट्ठा करने के लिए उपयोग किया लेकिन मैं इसे देख रहा हूं कि सर्वर ठीक से पूरा कर रहा है लेकिन क्लाइंट आंतरिक संदेश के साथ "खराब HTTP प्रतिक्रिया प्राप्त हुआ" के साथ समाप्त होता है "रिमोट सर्वर लौटा एक अप्रत्याशित प्रतिक्रिया: (502) खराब गेटवे। " सर्वर 42 सेकंड के बाद पूरा हो जाता है और क्लाइंट को 31 सेकंड में त्रुटि मिलती है।यह हमेशा ग्राहक के लिए 31 सेकंड है। –
इसे समझ लिया। हम आईआईएस 7 एप्लिकेशन अनुरोध रूटिंग मॉड्यूल का उपयोग कर रहे हैं जिसमें प्रॉक्सी सेटिंग्स हैं जिनमें से एक 30 सेकंड टाइमआउट था। डब्ल्यूसीएफ सेवा ट्रेस व्यूअर का उपयोग करने से मुझे यह समझने में मदद मिली कि डब्ल्यूसीएफ सेवा समस्या नहीं थी लेकिन ग्राहक और सेवा के बीच कुछ थी। –