2012-02-09 15 views
15

मैं ExchangeService WebService API (Microsoft.Exchange.WebServices.Data) का उपयोग कर रहा हूं लेकिन मुझे Close या Dispose विधि नहीं मिल रही है।सी # में ExchangeService का निपटान/बंद करें?

क्या किसी भी तरह कनेक्शन को बंद करने में असमर्थ नहीं है?

मेरे विधि इस प्रकार है:

public void CheckMails() 
{ 
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
    IMAPCredentials creds = new IMAPCredentials(); 
    service.Credentials = new NetworkCredential(creds.User, creds.Pass, creds.Domain); 
    service.AutodiscoverUrl(creds.User + "@example.com"); 

    // not the real code from here on but you'll get the idea... 
    // var emails = service.FindItems(); 
    // emails[0].Load(); 
    // emails[0].Attachments[0].Load(); 
    // ... 
} 

उत्तर

17

कोई बंद/ExchangeService वर्ग पर निपटान विधि क्योंकि वर्ग वेब सेवाओं के कनेक्शन को बनाए रखने नहीं करता है। इसके बजाए एक नया HTTP कनेक्शन बनाया गया है और आवश्यकतानुसार बंद कर दिया गया है।

उदाहरण के लिए जब आप ExchangeService.FindItems पर कॉल करते हैं तो एक्सचेंज सर्वर के लिए एक नया HTTP कनेक्शन विधि कॉल के भीतर FindItems पर बनाया और बंद कर दिया जाता है।

+0

आपको अभी भी डब्ल्यूसीएफ-सेवाओं को बंद करने की आवश्यकता है और 'उपयोग' में उन्हें लपेटने के साथ एक बुरा बग है, इसलिए मैं पूछता हूं। स्पष्टीकरण के लिए धन्यवाद! –

+1

@ सिमोनवॉकर: मैं खुद को सोच रहा हूं कि एक्सचेंज सेवा वर्ग बंद/निपटान के संबंध में कैसे काम करता है, इसलिए मैं इसमें खोद रहा हूं। ध्यान दें कि ईडब्ल्यूएस डब्ल्यूसीएफ सेवा नहीं है क्योंकि इसे "पुराने फैशन" एएसएमएक्स तरीके से लागू किया गया है। –

+0

@JakobChristensen: जब हम कई बार ईडब्ल्यूएस (समान प्रमाण-पत्रों का उपयोग करके) से कनेक्ट करने का प्रयास करते हैं, तो 5 बार हमें अनुमति से इनकार कर दिया जाता है। क्या इसका मतलब है, ईडब्ल्यूएस परिभाषित समय अवधि के लिए कनेक्शन रखता है और किसी और कनेक्शन की अनुमति नहीं देता है? – Naresh

0

मुझे एहसास है कि यह बहुत पुराना है, लेकिन मेरे पास हाल ही में एक ही सवाल था, क्योंकि हमें मेलबॉक्स से कनेक्ट करने के बाद कोई समस्या है, और बाद में उसी विधि को फिर से प्रयास करने के बाद, हमें एक HTTP अपवाद मिलता है। फिर, एक मिनट या उससे भी प्रतीक्षा करने के बाद, हम कनेक्ट कर सकते हैं ... लेकिन स्वीकृत उत्तर पर टिप्पणियों की तरह, यह शायद एक्सचेंज सर्वर पर एक सेटिंग है।

सवाल का जवाब करने के लिए, तकनीकी तौर पर, के बाद से ExchangeService IDisposable लागू नहीं है, तो एक कनेक्शन निपटान करने के लिए कोई जरूरत नहीं है, और न ही आप एक using बयान में एक उदाहरण लपेट सकता है।

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

  • कोई संबंधित समस्या नहीं^_^