2016-08-12 12 views
5

Genelde EWS ve Exchange için çok yeni, bu yüzden en iyi yaklaşımın ne olduğundan emin değilim.Odaklama Bir Odayla İlgili Olarak ExtendedProperties

Bir oda hakkında yapılandırma bilgilerini ayarlamak çalışıyorum

Arkaplan. EWS API'nın bana ExtendedProperties ekleyebileceğim bir Room nesnesi sağladığını umuyordum, ancak odaların sadece bir e-posta adresi olduğu anlaşılıyor.

Daha sonra, her odanın ilişkili bir CalendarFolder olduğunu gördüm. Bu nedenle, şu anda orijinal sorgunun ifade ettiği CalendarFolder numaralı oda yapılandırmasını ayarlamaya çalışıyorum.

Ben kullanarak CalendarFolder basit güncelleme yapmaya çalışıyorum

Orijinal Soru: .Update() demenden klasör nedeniyle geçersiz başarısız operasyon kaydet "olsun

var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(roomEmail.Address)); 
var myCalendar = CalendarFolder.Bind(service, folderId, PropertySet.FirstClassProperties); 

myCalendar.DisplayName += "Updated"; 
myCalendar.Update(); 

Ancak, özellik değerleri "

Sorununile ilgili bir sorun olabileceğine inanıyorum, takvim klasörünün sunucuda sahip olduğu özelliklerin tümüne sahip değil. Dolayısıyla, nesneyi güncellediğimde, yalnızca doğrulama hatalarına neden olan kısmi bir nesne gönderiyor.

CalendarFolder'u güncelleştirmeye nasıl giderim?

yapar ben de aşağıda tökezledi

fazla araştırma sonrası çalışma:

FindFoldersResults root = service.FindFolders(WellKnownFolderName.Calendar, new FolderView(500)); 

foreach (var folder in root.Folders) 
{ 
    folder.DisplayName = "confRoom1"; 
    folder.Update(); 
} 

İki yaklaşım arasındaki bir fark var eminim, ama anlamıyorum farklı sorgu yöntemleri kullanarak elde klasörün arasındaki farklar:

new FolderId(WellKnownFolderName.Calendar, new Mailbox(roomEmail.Address)); 
var myCalendar = CalendarFolder.Bind(service, folderId, PropertySet.FirstClassProperties); 

ve

yaklaşım bana verecekti ben oda için ExtendedProperties ayarlayabilirsiniz doğru CalendarFolder?

+0

Yeni bir anlayışa sahip misiniz? Önerilen cevaplardan biri işe yaradı mı? – lokusking

cevap

1

İki yaklaşım arasındaki bir fark var eminim, ama ben farklı sorgu yöntemleri kullanarak elde klasörün arasındaki farkları anlamıyorum:

yeni folderID (WellKnownFolderName. Takvim, yeni Posta Kutusu (roomEmail.Address)); var myCalendar = TakvimFolder.Bind (service, folderId, PropertySet.FirstClassProperties); ve

service.FindFolders (WellKnownFolderName.Takvim, yeni FolderView (500));

Önce bir posta kutusu varsayılan takvim klasörüne bağlanan ve ikinci Varsayılan takvim klasörü içinde alt klasörler olsun. Alt klasörleri, varsayılan olarak oluşturuldukları için varsayılan takvim klasöründe yeniden adlandırabilirsiniz. Özel bir klasörü olduğundan, bir posta kutusundaki Varsayılan takvim klasörünü yeniden adlandıramazsınız. Bir Genişletilmiş özelliğini ayarlamak istiyorsanız size alışverişini söyleyen bir propertyset tanımlamak gerektiğini değeri elde etmek istiyoruz Ne ör

ExtendedPropertyDefinition MyCustomProp = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "MyCustomProp", MapiPropertyType.String); 

CalendarFolder CalendarFolder = CalendarFolder.Bind(service,new FolderId(WellKnownFolderName.Calendar, "[email protected]")); 
CalendarFolder.SetExtendedProperty(MyCustomProp, "My Value"); 
CalendarFolder.Update(); 

(eğer özel bir klasörde yapabilirsiniz o zaman kolay sadece bunu tanımlamak ve ayarlayın) Bağlan veya FindEtems'i kullandığınızda bu değeri döndürmek için (Exchange varsayılan olarak mülkünüzü döndürmez) örneğin,

PropertySet MyPropSet = new PropertySet(BasePropertySet.FirstClassProperties); 
MyPropSet.Add(MyCustomProp); 
CalendarFolder = CalendarFolder.Bind(service, new FolderId(WellKnownFolderName.Calendar, "[email protected]"),MyPropSet); 
Object PropValue = null; 
if (CalendarFolder.TryGetProperty(MyCustomProp, out PropValue)) 
{ 
    Console.WriteLine(PropValue); 
} 
+0

Yapmaya çalıştığım şeyin açıklamasını ekledim. –

İlgili konular