14

मेरे पास एक डब्ल्यूसीएफ सेवा है जो मुझे लोड शर्तों के तहत यह त्रुटि दे रही है (और मैं अन्यथा त्रुटि को फिर से उत्पन्न नहीं कर सकता)। हम लगभग एक सप्ताह अब ऐसी कोई भाग्य के साथ .. इसके चारों ओर एक रास्ता खोजने की कोशिश कर रहा हैSystem.Net.WebException: अनुरोध निरस्त कर दिया गया था: अनुरोध रद्द कर दिया गया था

त्रुटि मैं देख रहा हूँ यह करने के दो भाग हैं,

System.ServiceModel.CommunicationException: An error: (The request was aborted: the request was cancelled.) occurred while transmitting data over the http channel.

और:

System.Net.WebException: The request was aborted: the request was cancelled.

मैंने देखा है कि कई लोग Reference.cs फ़ाइल में एक विधि को अधिभारित करके KeepAlive = false सेट करके जीवित रहने के साथ काम करने को अक्षम करने का सुझाव देते हैं, हालांकि, हमारी ग्राहक पक्ष सेवा संदर्भ का उपयोग कर रही है (वेब ​​संदर्भ के अतिरिक्त) और यह विकल्प मौजूद नहीं है अब और।

मैंने देखा है कि एक और विकल्प BasicHttpBinding की बजाय सेवा के लिए एक कस्टम बाध्यकारी जोड़ना था, लेकिन हम वेबरिएफर का उपयोग कर रहे लोगों के लिए वेबसाईट का पिछला समर्थन परेशान करेंगे (क्योंकि CustomBinding नहीं है एसओएपी सक्षम)।

क्या किसी ने इससे पहले इस त्रुटि का सामना किया है? सर्वर पक्ष को प्रभावित किए बिना डब्ल्यूसीएफ में जिंदा रखने का कोई तरीका है? क्या कोई और चीज है जो जीवित रहती है जो इस त्रुटि के कारण जानी जाती है?

+0

आप एचटीपी संदर्भ का उपयोग कर सकते हैं और जो भी चाहते हैं उसे कर सकते हैं। यहां एक नज़र डालें: http://blogs.msdn.com/b/justinjsmith/archive/2007/08/22/setting-http-headers-in-wcf-net-3-5.aspx – Aliostad

उत्तर

5

मुझे नहीं लगता कि HTTP जीवित रहता है इसके लिए ज़िम्मेदार है। डब्ल्यूसीएफ इसे स्वयं से संभालने में सक्षम होना चाहिए ताकि HTTP निरंतर कनेक्शन अनुरोधों के बीच साझा किया जा सके और यदि यह समाप्त हो जाता है (यह 100s of inactivity के बाद समाप्त हो जाता है) डब्ल्यूसीएफ किसी भी अपवाद को फायर किए बिना नया बनाता है। यदि अनुरोध संचरण के दौरान आपका कनेक्शन निरस्त कर दिया गया है तो मुझे उम्मीद है कि कुछ और समस्या होगी।

आप को जीवित रखने के लिए HTTP बिना इस कस्टम BasicHttpBinding के बराबर बंधन का उपयोग कर सकते हैं:

<bindings> 
    <customBinding> 
    <binding name="NoKeepAlive"> 
     <textMessageEncoding messageVersion="Soap11" /> 
     <httpTransport keepAliveEnabled="false" /> 
    </binding> 
    </customBinding> 
</bindings> 
+2

हां, यह ज़िम्मेदार है और मैंने इसे पहले देखा है। – Aliostad

+0

वाह, मैंने अभी यह अनुभव किया है। क्या आश्चर्य है। धन्यवाद, @Aliostad – Alexandru

+0

@Aliostad जिज्ञासा से बाहर, क्या आप टॉमकैट आधारित जावा वेब सेवा भी कॉल कर रहे हैं? – Alexandru

1

मैं इस में ठीक उसी समस्या थी। मेरे मामले में मैं असीमित रूप से अनुरोध निष्पादित कर रहा था। मैं अपने ग्राहक से 'सर्वर' को कुछ सौ अनुरोध भेज रहा था। मैं मूल एचटीपी बाइंडिंग का उपयोग कर रहा/रही हूं। और open.imeout सेटिंग में मेरे app.config सेटिंग में 60 सेकंड या एक मिनट पर सेट किया गया था। एक बार जब मैं इसे 10 मिनट की तरह बड़ी संख्या में सेट करता हूं, तो समस्या दूर हो जाती है।

तो उदाहरण के लिए मैं अपने app.config फ़ाइल में इन सभी मूल्यों को बदल दिया:

<configuration> 
    <system.serviceModel> 
     <bindings> 
      <basicHttpBinding> 
       <binding name="BasicHttpBinding_IScriptRunHost" closeTimeout="00:10:00" 
        openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" 

10 मिनट।

4

बड़ी फ़ाइलों को अपलोड करने का प्रयास करते समय मुझे यह समस्या थी। मुझे इसे वेब सेवाओं के web.config में जोड़ना पड़ा

<system.web> 
    <httpRuntime maxRequestLength="10240" />