c# सबसे पहले एक.net webservice को कॉल धीमा है




vb.net web-services (4)

मैं अपने नेट वर्करफार्म एप से एक .net वेबसाईट को फोन कर रहा हूँ, दोनों फ्रेमवर्क 4.0 में। कार्यक्रम के निष्पादन के दौरान, पहली बार webservice नामक एक विधि है, कॉल ~ 10-12 सेकंड लेता है बाद के कॉल ~ 1-2 सेकंड लेते हैं बाद के कॉल, भले ही वेब संदर्भ आवेश पुन: तैयार हो जाए, अभी भी ~ 1-2 सेकेंड हैं जब winforms app पुनरारंभ होता है, पहली कॉल विलंब फिर से होता है, लेकिन बाद के कॉल उत्तरदायी हैं।

कॉल संदर्भ से पहले वेब संदर्भ का उदाहरण बनाया जा रहा है, और देरी का हिस्सा नहीं है।

Winforms ऐप के लिए XmlSerializers जनरेट किया जा रहा है (और जहां तक ​​मुझे पता है, इस्तेमाल किया गया है, लेकिन मुझे यकीन नहीं है कि यह कैसे सत्यापित करें)

वेबसाइस पक्ष पर पहली बार चलाने के कारण विलंब नहीं हो रहा है यह पूरे दिन में इस्तेमाल किया जा रहा एक उत्पादन webservice है, और इसकी एपूल स्मृति में शेष है जहाँ तक मैं देख सकता हूं, ग्राहक के पक्ष में या उस कॉल के लिए क्लाइंट और सर्वर के बीच में देरी हो रही है, लेकिन बाद के कॉल नहीं।

सुनिश्चित नहीं है कि अगले क्या जांचें कोई विचार?


मैंने अपने मूलभूत एचटीपीपी बाइंडिंग पर इन सेटिंग्स को जोड़ दिया है, स्वचालित प्रॉक्सी डिटेक्शन निष्क्रिय कर रहा है और पहले निष्पादन समय पर एक बड़ी गति प्राप्त कर रहा है। यदि आप इंट्रानेट वातावरण में हैं तो यह बिल्कुल अच्छा काम करता है, या आप जानते हैं कि आपको किसी प्रॉक्सी की ज़रूरत नहीं है।

bypassProxyOnLocal = "false"

useDefaultWebProxy = "false"

उम्मीद है की यह मदद करेगा।


जैसा कि खर्चकर्ता ने संकेत दिया था, इस मुद्दे को प्रॉक्सी पहचान के साथ करना पड़ा। इंटरनेट एक्सप्लोरर में उस समस्या को हल करने से समस्या हल हो गई, लेकिन मेरी स्थिति में ऐसा करने के लिए संभव नहीं था

इसके बजाय, डिफ़ॉल्ट प्रॉक्सी के उपयोग को बायपास करने के लिए एक वैकल्पिक उपाय है, और इसलिए स्वत: पता लगाना

इन प्रविष्टियों को app.config में जोड़ने से कुछ यूआरएल प्रॉक्सी को बायपास करने की अनुमति देता है:

<configuration>
    <system.net>
        <defaultProxy>
            <bypasslist>
                <add address="server/domain name" />
            </bypasslist>
        </defaultProxy>
    </system.net>
</configuration>

अधिक जानकारी यहां पायी जा सकती है: <डिफ़ॉल्ट प्रॉक्सि एलिमेंट> MSDN पर


प्रॉक्सी को खाली WebProxy पर सेट करने का प्रयास करें, अर्थात:

request.Proxy = new WebProxy(); 

या आप प्रॉक्सी सेटिंग्स को ओवरराइड कर सकते हैं। सिस्टम फ़ाइल में डिफ़ॉल्ट प्रोसी कुंजी का उपयोग कर अपने अनुप्रयोग के लिए कॉन्फ़िफ़ फ़ाइल। निम्नलिखित स्वचालित प्रॉक्सी पता लगाने को अक्षम करता है:

<configuration >
  <system.net>
    <defaultProxy>
      <proxy bypassonlocal="true" usesystemdefault="false" />
    </defaultProxy>
</system.net>
</configuration>

http://weblog.west-wind.com/posts/2005/Dec/14/Slow-Http-client-calls-from-ASPNET-20-Make-sure-you-check-your-Proxy-Settings


मुझे कई बार इस समस्या का सामना करना पड़ा है - मैं इसे नफरत करता हूं !!! lol Whilst मैं यह कभी हल नहीं किया है, आप कुछ चीजों की कोशिश कर सकते हैं सबसे पहले, स्टार्टअप के दौरान वेब सेवा को कॉल करें और पहले 'दर्द' से बाहर निकलें! दूसरे, वेब सेवा के आईआईएस अनुप्रयोग पूल के साथ गड़बड़ करने की कोशिश करें - ऐसा करें कि यह कभी भी खुद को पुन: रिसाव न करें या कम से कम सुबह के एक अनैतिक समय पर या शायद प्रति 10000 अनुरोध

मुझे पता है यह शायद एक महान जवाब नहीं है, लेकिन उम्मीद है कि यह थोड़ा मदद करता है!

संपादित करें:

इस मुद्दे का हिस्सा यह है कि वेब सेवा 'हमेशा' नहीं है - यह सो जाता है, जब तक आवश्यकतानुसार रीसायकल नहीं होता है वेब सेवाओं को जीवित रखने, 5 9एस अप समय आदि रखने पर यह पढ़ने योग्य होगा!







asmx