मेरे पास .NET 3.5 का उपयोग करके आईआईएस एक्सप्रेस (अंत में पूर्ण आईआईएस) में होस्ट किया गया एक काफी सरल डब्ल्यूसीएफ वेब सेवा है। सेवा विधि काफी हद तक अनिच्छुक है।सर्वर 500: बहुत से लंबित सुरक्षित बातचीत
[ServiceContract]
public class MySvc
{
[OperationContract]
public Stuff MyMethod(string input)
{
Stuff result = DoSomething();
return result;
}
}
सेवा विन्यास भी काफी सामान्य है:
<system.serviceModel>
<services>
<service behaviorConfiguration="MySvcBehavior" name="MySvc">
<endpoint address="" binding="wsHttpBinding" contract="MySvc">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MySvcBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
सेवा एक ASPX आवेदन में से एक कोड-पीछे सेवन किया जाता है। एक सेवा संदर्भ है, जो कुछ समान रूप से अनिच्छुक कोड का कारण बनता है।
MySvcClient svc = new MySvcClient();
Stuff result = svc.MyMethod("foo");
जब तक यह एक समय में एक अनुरोध है, सब कुछ ठीक काम करता है और ग्राहक कोड अपेक्षित परिणाम प्राप्त करता है। वाह।
समस्या तब आती है जब मैं कुछ बहुत ही प्राचीन तनाव परीक्षण करता हूं। मैं ब्राउज़र में क्लाइंट एएसपीएक्स पेज लोड करता हूं, और उसके बाद F5 कुंजी दबाता हूं। आईआईएस एक्सप्रेस विंडो को देखते हुए, पहले परिणाम 200 स्थिति के रूप में वापस आते हैं, लेकिन कुछ मिनटों के बाद मैं स्थिति 500 देखना शुरू कर देता हूं। इस बिंदु पर, सेवा केवल आईआईएस एक्सप्रेस को पुनरारंभ करने तक स्थिति 500 के साथ प्रतिक्रिया देगी। (लगभग 10 मिनट प्रतीक्षा करने के आधार पर।)
क्लाइंट कोड में ब्रेकपॉइंट सेट करना, मुझे पूरा रिटर्न संदेश है "सर्वर पर बहुत अधिक लंबित सुरक्षित बातचीतएं हैं। कृपया बाद में पुनः प्रयास करें।"
सर्वर कोड में ब्रेकपॉइंट सेट करना, मुझे लगता है कि मेरा कोड भी लागू नहीं किया जा रहा है। तो यह कॉल और मेरे कोड की वास्तविक शुरुआत के बीच कहीं भी विफल रहा है।
मेरी ऑनलाइन खोजें बहुत ही आशाजनक नहीं रही हैं, अधिकांशतः suggestion of writing a custom binding की ओर बढ़ रही है ताकि अधिकतम भुगतान करने वाली संपत्तियों को ओवरराइड किया जा सके और "किसी ने मुझे बताया कि एक [अज्ञात] कॉन्फ़िगरेशन फ़ाइल सेटिंग है" जो तब होता है टूटी हुई लिंक का दावा है कि माइक्रोसॉफ्ट ने इसे एक बग के रूप में स्वीकार किया है।
maxPendingSessions प्रॉपर्टी के बारे में लिंक दो मिनट के टाइमआउट के साथ 128 कनेक्शन की सीमा का उल्लेख करता है, और मैं निश्चित रूप से देख सकता हूं कि परीक्षण की मेरी विधि कुछ कनेक्शनों को बाधित करने जा रही है। क्या यह स्वीकार्य रूप से खराब परीक्षण पद्धति का अपेक्षित परिणाम है? या इसे सुधारने के लिए कॉन्फ़िगरेशन में कुछ किया जा सकता है?
क्या आपने 'उपयोग' कथन का उपयोग किया था? निपटान तक कनेक्शन खुला रखा जाएगा। जब तक कोई 'उपयोग' कथन न हो, कनेक्शन के सफाई को कचरा कलेक्टर द्वारा निर्धारित किया जाता है। – Caramiriel
यह वास्तव में मेरे क्लाइंट-साइड कोड के साथ एक समस्या है। लेकिन स्थिति 500 संदेशों का मतलब समीकरण के सर्वर पक्ष पर कुछ नाखुश है। – ThatBlairGuy