2016-08-12 21 views
5

Tôi rất mới với EWS và Exchange nói chung, vì vậy không thực sự chắc chắn cách tiếp cận tốt nhất là gì.Đặt ExtendedProperties liên quan đến Phòng

nền

Tôi cố gắng để thiết lập thông tin cấu hình về phòng. Tôi hy vọng rằng API EWS đã cung cấp cho tôi một đối tượng Room mà tôi có thể thêm ExtendedProperties vào, tuy nhiên, dường như các phòng chỉ là một địa chỉ email.

Sau đó tôi thấy rằng mỗi phòng có CalendarFolder được liên kết với nó, vì vậy tôi hiện đang cố gắng đặt cấu hình phòng trong CalendarFolder, đó là câu hỏi ban đầu dưới đây đề cập đến.

Câu hỏi gốc

tôi đang cố gắng để làm một bản cập nhật đơn giản của một CalendarFolder sử dụng:

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

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

Tuy nhiên, khi tôi gọi .Update() tôi nhận được "Thư mục lưu hoạt động thất bại do không hợp lệ Giá trị tài sản "

Tôi tin rằng sự cố có thể liên quan đến myCalendar không có tất cả các thuộc tính mà thư mục lịch có trên máy chủ. Vì vậy, khi tôi cập nhật đối tượng, nó chỉ gửi một phần đối tượng đang gây ra lỗi xác thực.

Tôi làm cách nào để cập nhật một số CalendarFolder?

Sau khi nghiên cứu sâu hơn

Tôi cũng tình cờ sau đây, mà không làm việc:

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

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

Tôi chắc rằng có một sự khác biệt giữa hai cách tiếp cận, nhưng tôi không hiểu sự khác nhau giữa các thư mục mà tôi nhận được bằng cách sử dụng phương pháp truy vấn khác nhau:

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

Cách tiếp cận nào sẽ cho tôi đúng CalendarFolder nơi tôi có thể đặt ExtendedProperties cho phòng?

+0

Bạn có thông tin chi tiết mới nào không? Một trong những câu trả lời được đề xuất có hoạt động không? – lokusking

Trả lời

1

Tôi chắc rằng có một sự khác biệt giữa hai cách tiếp cận, nhưng tôi không hiểu sự khác nhau giữa các thư mục mà tôi nhận được bằng cách sử dụng phương pháp truy vấn khác nhau:

mới FolderId (WellKnownFolderName. Lịch, hộp thư mới (roomEmail.Address)); var myCalendar = CalendarFolder.Bind (service, folderId, PropertySet.FirstClassProperties); và

service.FindFolders (WellKnownFolderName.Lịch, FolderView mới (500));

Đầu tiên gắn với thư mục lịch mặc định trong hộp thư và thư mục thứ hai nhận thư mục con trong thư mục lịch mặc định. Bạn có thể đổi tên các thư mục con trong thư mục lịch mặc định vì chúng được người dùng tạo. Bạn không thể đổi tên thư mục Lịch mặc định trong Hộp thư vì thư mục đặc biệt của nó. Nếu bạn muốn thiết lập một tài sản Extended (mà bạn có thể làm trên một thư mục đặc biệt sau đó nó dễ dàng chỉ cần định nghĩa nó và đặt nó) ví dụ

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(); 

gì bạn muốn nhận được giá trị mà bạn phải xác định một propertySet mà nói hối đoái để trả lại giá trị đó khi bạn Bind hoặc sử dụng FindItems (Exchange sẽ không trả lại thuộc tính của bạn theo mặc định) ví dụ:

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

Tôi đã thêm giải thích về những gì tôi đang cố gắng hoàn thành. –

Các vấn đề liên quan