9

तक नहीं पहुंच सकता है मैंने हाल ही में सी # का उपयोग कर एक .NET कंसोल ऐप को कोड किया है। इसका उद्देश्य किसी विशिष्ट फ़ोल्डर में ईमेल को पढ़ना था, उन्हें विशिष्ट मानों के लिए पार्स करना और उन्हें डेटाबेस में सहेजना था।सार्वजनिक फ़ोल्डर रूट

हमारी ईमेल प्रणाली, जिस समय मैंने मूल रूप से इसे कोड किया था, एक्सचेंज 2003 था। हालांकि, मुझे पता चला कि हम जल्द ही एक्सचेंज 2010 में अपग्रेड कर रहे होंगे: ergo, मैंने दोनों वातावरण में काम करने के लिए कोड बनाया है।

एक्सचेंज 2010 में माइग्रेशन के बाद, हालांकि, ऐप टूट गया है।

ऐप 2010 कार्यक्षमता के लिए ईडब्ल्यूएस एपीआई का उपयोग करता है। जब यह publicfoldersroot को खोजने के लिए ExchangeService की FindFolders विधि का उपयोग करने का प्रयास करता है, तो यह अपवाद फेंकता है।

ExchangeService service = new ExchangeService(); 
FindFoldersResults findRootFldrs; 

service.UseDefaultCredentials = true; 
service.AutodiscoverUrl("[email protected]", delegate(string x) { 
return true; }); 

FolderView fview = new FolderView(100); 
fview.Traversal = FolderTraversal.Deep; 

findRootFldrs = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, 
fview); 

अपवाद: कोड यह ErrorInvalidSchemaVersionForMailboxVersion, उर्फ:

:

मेलबॉक्स कि अनुरोध किया गया था निर्दिष्ट RequestServerVersion

मैं का प्रयास किया है का समर्थन नहीं करता

  • एक्सचेंज सेवा को 2007 में सेट करना (एक फेंकता है अपवाद: "एक आंतरिक सर्वर त्रुटि हुई। कार्रवाई विफल रही। ")

  • अपने आप को देते हुए सार्वजनिक फ़ोल्डर की अनुमति के उच्चतम स्तर (कोई प्रभाव नहीं)

  • मैन्युअल अपनी उपलब्धियों को स्थापित करने (कोई प्रभाव नहीं)

मैं देख सकते हैं Outlook 2007 में सार्वजनिक फ़ोल्डर्स; publicfoldersroot प्रॉपर्टी इंटेलिजेंस में उपलब्ध है; कोड स्थानीय फ़ोल्डरों पर काम करता है (मैं अपने इनबॉक्स को पार्स कर सकता हूं)।

मेरी वर्तमान सोच यह है कि यह एक्सचेंज के हालिया सेटअप पर एक सेटिंग है ई 2010: दुर्भाग्य से यह वास्तव में मेरा क्षेत्र नहीं है। अपवाद मुझे बताता है कि यह एक्सचेंज के पिछले संस्करण का उपयोग करने की कोशिश कर रहा है। इसे 2007 में सेट करने से कोड को आंतरिक सर्वर त्रुटि के साथ असफल होने का कारण बनता है।

उत्तर

1

बदलें इस लाइन:

ExchangeService service = new ExchangeService(); 

कुछ इस तरह हैं:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010); 

या

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 

आपके संस्करण के आधार पर।

1

पुरानी पोस्ट है, लेकिन यह मेरे लिए इस सवाल का जवाब साबित हुआ: http://technet.microsoft.com/en-us/library/bb629522.aspx

मूलतः EWS के साथ कनेक्ट करने के लिए इस्तेमाल खाता जिसका डिफ़ॉल्ट सार्वजनिक फ़ोल्डर सर्वर अभी भी एक्सचेंज 2003 था एक मेलबॉक्स डेटाबेस में एक मेलबॉक्स था कोई और ईडब्ल्यूएस पर सार्वजनिक फ़ोल्डरों की गणना करने के सभी प्रयास विफल रहे। 2010 बैकएंड सर्वर के लिए इसे स्वैप कर तुरंत इसे ठीक कर दिया।

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