2008-11-12 35 views
16

यह अपवाद लगातार एक सोप अनुरोध जो आकार में लगभग तीन मिनट प्राप्त करने के लिए ले जाता है और 2.25 megs है पर फेंक दिया जाता है बंद हो गया।अंतर्निहित कनेक्शन बंद कर दिया गया था: कनेक्शन अप्रत्याशित रूप से

जब वेब मैं पदों के सभी प्रकार है जो सभी अनुरोध पर हेडर स्थापना के बारे में होने लगते हैं खोजने के परिशोध, कुछ मुझे "की अपेक्षा:" नहीं भेजना चाहते हैं हैडर, कुछ मुझे भेजना चाहते हैं "Keep-Alive: "हेडर, लेकिन जो हेडर मैं भेजता हूं, उससे अनियंत्रित मुझे अभी भी यह अजीब त्रुटि मिलती है। मुझे विश्वास नहीं है कि किसी भी शीर्षलेख को सेट करना मेरा जवाब है, क्योंकि मैं "कर्ल" का उपयोग करके सटीक उसी अनुरोध को फिर से बना सकता हूं और अंततः कोई समस्या नहीं होने पर प्रतिक्रिया वापस आती है।

मेरा <httpRuntime maxRequestLength="409600" executionTimeout="900"/>

मुझे लगता है जैसे मैं विकल्पों से बाहर हो रहा हूं। अगर कोई भी सहायता प्रदान कर सकता है तो मैं सबसे ज्यादा आभारी हूं। कुछ अन्य बातों को ध्यान में रखना होगा कि जिस सर्वर से मैं डेटा का अनुरोध कर रहा हूं वह मेरे हाथों से बाहर है, यह अनुरोध https से अधिक हैं और छोटे प्रतिक्रियाओं के साथ अन्य अनुरोध निर्दोष रूप से काम करते हैं।

धन्यवाद

+0

मेरा मानना ​​है कि यह समस्या लोड संतुलित सर्वर से संबंधित है। – Dave

उत्तर

3

आप this Blog Post की sugestion की कोशिश की है? समस्या शायद एनईटी के टीसीपी/HTTP स्टैक कार्यान्वयन में झूठ बोल जाएगी।

+0

हाँ ने कोशिश की कि, कोई किस्मत, मेरे लिए यह सिर्फ एक शीर्षलेख सेट करने के लिए प्रतीत होता है "कनेक्शन: Keep-Alive" – Dave

+2

तो आपको डीबग करने की आवश्यकता है कि .NET HTTP/TCP स्टैक वास्तव में क्या कर रहा है। विशेष रूप से यह कर्ल की तुलना में गलत क्या कर रहा है। आपको अपने एसओएपी अनुरोध और सर्वर के बीच या तो वायरशर्क (टीसीपी नेटवर्क स्निफ़फर) या फिडलर (HTTP प्रॉक्सी) रखना चाहिए। इस तरह आप अंतर को खोजने में सक्षम होना चाहिए। – mkoeller

+0

ठीक है, मैंने पहले से ही "वेब सेवा" को डब्ल्यूसीएफ सेवा में परिवर्तित कर दिया है, अगर इससे मदद नहीं मिलती है, तो मैं इसे आज़माउंगा, लेकिन जांच करने की आवश्यकता होगी कि वायरसहार्क से परिणामों को बेहतर तरीके से कैसे फ़िल्टर किया जाए ... या शायद फिडलर अच्छा है – Dave

11

आपने पोस्ट को .NET35 के रूप में टैग किया है, तो क्या आप डब्ल्यूसीएफ का उपयोग कर रहे हैं?

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
      <readerQuotas maxDepth="32" maxStringContentLength="8388608" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://localhost:1602/EndPoint.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding" contract="IEndPointContract" name="EndPoint" behaviorConfiguration="EndpointBehaviour" />  
    </client> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="EndpointBehaviour"> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    </system.serviceModel> 
+2

नहीं, मुझे लगता है कि मैं डब्लूसीएफ में परिवर्तित हो सकता हूं हालांकि ... मुझे लगता है कि मूल कोड 2.0 में लिखे गए पायलट से या शायद 1.1 भी हो सकता है। – Dave

+0

चीजें खुश लगती हैं, सुझाव – Dave

6

मुझे आशा है कि यह नहीं भी इस सवाल का जवाब देने के लिए देर हो चुकी है:

यदि हां, तो यहाँ App.config का एक उदाहरण उपयोग हम बड़े डेटा सेट के लिए है।

[ServiceKnownType(typeof(ReturnClass))]

अधिक सामान्य समाधान है कि बहुरूपी कक्षाएं लौटने इस पोस्ट को देखें अनुमति देता है के लिए::

अपने अनुबंध इंटरफेस की परिभाषा पर निम्न विशेषता जोड़ने का प्रयास करें http://www.goeleven.com/blog/entryDetail.aspx?entry=45

3

मैं एक ही मिल गया है

Merrick Chaffer's Blog

यह: मुद्दा है, और गहरी जांच के बाद मैं इस लेख पाया क्लाइंट और सर्वर दोनों के लिए "DataContractSerializer" को सेट करने से संबंधित सभी संबंधित थे। आशा है कि यह सहायक हो।

2

मैंने एक और क्षेत्र जोड़ा है, लेकिन संपत्ति पर कोई सेट नहीं है। यह वही त्रुटि के लिए मेरा समाधान था।

[DataMember] 
public bool HasValue 
{ 
    get { return true; } 
    set { }//adding this line made the solution. 
} 
4

आप edmx आप इस मिल जाएगा की dbml उपयोग कर रहे हैं के बजाय (अंतर्निहित कनेक्शन बंद कर दिया गया था:। कनेक्शन अप्रत्याशित रूप से बंद हो गया) dbml serialisable डेटा यह datacontract की जरूरत नहीं लौटेगा के रूप में तो dbml फ़ाइल के गुणों के लिए जाना और सीरियलाइजेशन मोड को यूनिडायरेक्शनल में बदलें।

+0

के लिए धन्यवाद यह मेरी समस्या हल हो गई, धन्यवाद शर्मजा! एक और नोट, यद्यपि: इसे काम करने के लिए मुझे क्लाइंट पक्ष पर अपना सेवा संदर्भ अपडेट करना पड़ा। उम्मीद है कि यह दूसरों को एक ही स्थिति में मदद करता है। –

3

मैं क्योंकि मेरे datatransfereobjects एक पुनरावर्ती तरीके से एक दूसरे में संदर्भित यह त्रुटि हुई।

उदाहरण के लिए:

ग्राहक-> (है) -> रेटिंग रेटिंग-> (के हैं) -> ग्राहक

ताकि आप चक्र निकालना होगा।

[DataContract] 
public class Rating 
{ 
    private Customer _customer; 
    //[DataMember] // <- EITHER HERE 
    public Customer Customer 
    { 
     get { return _customer; } 
     set { _customer = value; } 
    } 
} 


[DataContract] 
public class Customer 
{ 
    private long _customerID; 
    [DataMember] 
    public long CustomerID 
    { 
     get { return _customerID; } 
     set { _customerID = value; } 
    } 

    [DataMember] // <- OR HERE 
    public Rating Rating 
    { 
     get { return _rating; } 
     set { _rating = value; } 
    } 
} 
+0

धन्यवाद, आपके समाधान ने मेरी मदद की। – user1429899

3

की कोशिश की कई तरीकों से जब तक मैं इस समाधान इस त्रुटि संदेश से छुटकारा पाने के: http://kiranpatils.wordpress.com/2008/09/22/the-underlying-connection-was-closed-the-connection-was-closed-unexpectedly-while-returning-data-table-from-wcf-service/

आप अपने सूची <> डेटासेट को बदल सकते हैं। मुझे संदेह है कि डेटासेट सूची <> की तुलना में अधिक मात्रा में डेटा संभाल सकता है।

उम्मीद है कि यह मदद करता है।

0

ईएफ के साथ डब्ल्यूसीएफ के लिए, बस संदर्भ वर्ग में निम्न कोड जोड़ें।

आधार। कॉन्फ़िगरेशन.प्रोक्सी क्रिएशनएनएबल = झूठी;

1

यदि कोई आंतरिक त्रुटि है तो यह एक सामान्य त्रुटि उठाई गई है।

कोशिश यहाँ अनुरेखण जोड़ना: http://msdn.microsoft.com/en-us/library/ms732023(v=vs.110).aspx

फिर आप पूर्ण लॉग देखेंगे।

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

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