2010-08-21 9 views
15

मैं कैलेंडर आइटम पुनर्प्राप्त करने के लिए कैलेंडर ItemType दृश्य का उपयोग कर रहा हूं। मेरे द्वारा की जाने वाली एकमात्र चीजें वे हैं जिन्हें मैंने बनाया है और मुझे पता है कि वे सभी साप्ताहिक पुनरावर्ती आइटम हैं। मैं प्रत्येक व्यक्तिगत घटना को प्राप्त करने में सक्षम हूं और उनमें से किसी एक से आवर्ती मास्टर आइटम प्राप्त कर सकता हूं, लेकिन मैं अपनी खोज के दायरे को केवल उन वस्तुओं तक सीमित करना चाहता हूं जो मेरे पैटर्न से मेल खाते हैं।मैं एक्सचेंज वेब सेवाओं का उपयोग करके केवल पुनरावर्ती ईवेंट मास्टर्स को कैसे प्राप्त करूं?

मैं FindItemType पर प्रतिबंध संपत्ति का उपयोग करने का प्रयास कर रहा हूं ताकि calenderRecurrenceId के लिए निरंतर स्थिरता के साथ NotEqualTo प्रतिबंध निर्दिष्ट किया जा सके। इसने मेरा अनुरोध समय समाप्त कर दिया। अब तक मैं FindItemType के साथ पुनरावृत्ति लोड करने में असमर्थ रहा हूं और बाद में GetItemType कॉल का उपयोग करने की आवश्यकता है जब मुझे एक आवर्ती श्रृंखला में एक घटना होती है।

यहां वह कोड है जिसका मैं शुरुआत कर रहा हूं। कोड, दोनों Exchange 2007 और Exchange 2010.

var findItemRequest = new FindItemType(); 

    findItemRequest.ParentFolderIds = new DistinguishedFolderIdType[] 
    { 
     new DistinguishedFolderIdType() 
    }; 

    ((DistinguishedFolderIdType)findItemequest.ParentFolderIds[0]).Id = DistinguishedFolderIdNameType.calendar; 
    findItemRequest.Traversal = ItemQueryTraversalType.Shallow; 

    var itemShapeDefinition = new ItemResponseShapeType(
    { 
     BaseShape = DefaultShapeNamesType.AllProperties; 
    } 

    findItemRequest.Item = calenderView; 
    findItemRequest.ItemShape = itemShapeDefinition; 

    var findItemResponse = this.esb.FindItem(findItemRequest); 

भी साथ काम करने के लिए यदि आप उदाहरण के लिए किसी भी अच्छा स्रोत के बारे में पता की जरूरत है (MSDN में लोगों से परे), मैं उनका स्वागत करता हूँ। मैं आपातकाल में किसी और का कोड उठा रहा हूं और फ्लाई पर एक्सचेंज वेब सर्विसेज सीखने की कोशिश कर रहा हूं।

+0

जब मैं ईडब्ल्यूएस सीख रहा था, तो मैंने संदर्भ के रूप में ईडब्ल्यूएसडीडिटर कोड का उपयोग किया। – Avilo

उत्तर

4

शायद मैं आपको गलत समझ रहा हूं, इस मामले में मैं क्षमा चाहता हूं।

आप कैलेंडरव्यू का उपयोग नहीं करते हैं - यदि आप चाहते हैं कि आप सामान्य आवंटित कैलेंडर आइटम हैं तो आप सामान्य इंडेक्सपेज इटिम व्यू का उपयोग करें।

आप व्यक्तिगत वस्तुओं पर पुनरावृत्ति का विस्तार करने के लिए कैलेंडर व्यू का उपयोग करते हैं। हालांकि कैलेंडरव्यू के साथ समझौता प्रारंभ और समाप्ति तिथि के अलावा कोई प्रतिबंध नहीं है। कोई नहीं।

+0

एक कोड नमूना जोड़ने या एक संदर्भ शामिल करने के लिए देखभाल? मैं चीजों को काम करने में सक्षम था, लेकिन केवल प्रतिक्रियाओं को फ़िल्टर करके। मैं किसी और के कोड को शुरुआती बिंदु के रूप में उपयोग कर रहा था, यही कारण है कि मैंने कैलेंडरइटेम व्यू के साथ शुरुआत की (जो कि कैलेंडर आइटमों की तलाश में उचित लगता है), लेकिन मैं इसे अपना रास्ता आजमाने की कोशिश करना चाहता हूं। – tvanfosson

+1

मैं चाहता हूं कि हमारा कोड स्पष्ट रूप से गड़बड़ का थोड़ा सा है। हमने एक समय में 50 वस्तुओं में एक थ्रेड जैमिंग सामान के साथ शुरुआत की (और कुछ जटिल/रेस कंडीशन स्टफ से बचें जिन्हें मैं पसंद नहीं करता)। यह FindItem (idOnly) के बाद getItems द्वारा किया गया। फिर हमने पाया कि सामान्य इंडेक्सेड पेजव्यू में हमें केवल मास्टर आइटम मिलते हैं।मुझे होली ग्रिल की सिफारिश करने की अनुमति दें - यह थोड़ी पुरानी है (2007 वेब सेवाएं), लेकिन यह कई उदाहरणों के साथ व्यापक, स्पष्ट है ... – MJB

+0

यह माइक्रोसॉफ्ट प्रेस द्वारा माइक्रोसॉफ्ट एक्सचेंज सर्वर 2007 वेब सर्विसेज के अंदर एक पुस्तक है। और यह ईडब्ल्यूएस के इतने अजीब कोने के मामलों पर चर्चा करता है। प्रत्येक विकास टीम की एक प्रति होना चाहिए। डेविड स्टर्लिंग द्वारा माइक्रोसॉफ्ट® एक्सचेंज सर्वर 2007 वेब सर्विसेज के अंदर; बेन स्पेन; माइकल मेनर; मार्क टेलर; हू अपशैल ---------------------------------------------- ---------------------------------- प्रकाशक: माइक्रोसॉफ्ट प्रेस पब तिथि: 28 नवंबर, 2007 प्रिंट आईएसबीएन -10: 0-7356-2392-9 प्रिंट आईएसबीएन -13: 978-0-7356-2392-7 – MJB

-1

आप कस्टम खोज फ़िल्टर बना सकते हैं। आप विशिष्ट StartDate या isRecurring संपत्ति से खोजते हैं, तो आप सबसे आसान तरीका ... (SearchItems रिटर्न आवर्ती स्वामी)

List<SearchFilter> searchFilterCollection = new List<SearchFilter>(); 

     SearchFilter.IsGreaterThanOrEqualTo startDatumFilter = new SearchFilter.IsGreaterThanOrEqualTo(AppointmentSchema.Start, new DateTime(2012, 9, 16)); 
     SearchFilter.IsEqualTo masterRecurringFilter = new SearchFilter.IsEqualTo(AppointmentSchema.IsRecurring, true); 

     searchFilterCollection.Add(startDatumFilter); 
     searchFilterCollection.Add(masterRecurringFilter); 

     SearchFilter finalFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection); 

     ItemView itemView = new ItemView(100000); 
     itemView.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, AppointmentSchema.AppointmentType); 

     FindItemsResults<Item> items = _service.FindItems(WellKnownFolderName.Calendar, finalFilter, itemView); 
+0

IsRecurring आयोजक के स्वामित्व वाले स्वामी के लिए गलत होगा। Http://msdn.microsoft.com/en-us/library/office/bb204271(v=exchg.150).aspx देखें – Antony

0

केवल संपत्ति आप की जरूरत मिले RecurrenceStart संपत्ति है। क्योंकि ईडब्ल्यूएस की सीमाएं हैं, प्रतिबंधों में सभी गुणों का उपयोग करना संभव नहीं है। यह उम्मीद के रूप में काम कर रहा है।

संदर्भ: Find master recurring appointments

0

आप एक ExtendedPropertyDefinition साथ पुनरावृत्ति PidLid का उपयोग करके एक RecurrenceMaster खोज सकते हैं। यह काम करता है क्योंकि, उनके दस्तावेज़ीकरण के अनुसार, "यह संपत्ति एकल उदाहरण कैलेंडर आइटम्स पर मौजूद नहीं होनी चाहिए।"

https://msdn.microsoft.com/en-us/library/cc842017.aspx

// https://msdn.microsoft.com/en-us/library/cc842017.aspx 
ExtendedPropertyDefinition apptType = new ExtendedPropertyDefinition(
    DefaultExtendedPropertySet.Appointment, 
    0x00008216, //PidLidAppointmentRecur 
    MapiPropertyType.Binary); 

var restriction = new SearchFilter.Exists(apptType); 
var iView = new ItemView(10); 
var found = folder.FindItems(restriction, iView); 

मैं सिर्फ इस बात की पुष्टि इस काम करता है, आज, जब कुछ पुराने कोड है कि बादल में Office365 EWS के साथ काम करता समीक्षा।

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

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