2016-10-18 39 views
0

我使用EWS API 2.0更新Outlook會議項目中的位置和主題。我可以看到位置和主題反映在Outlook日曆中。但是,當我彈出打開預約項目時,該位置是空白的,但是,我仍然可以看到更新的主題。約會項目的EWS更新位置字段不起作用

下面是我使用的代碼:

Appointment appointment = Appointment.Bind(_service, ConvertId(entryId)); 
appointment.Location = location; 
appointment.Subject = "Server Update Subject"; 
appointment.Update(ConflictResolutionMode.AutoResolve, SendInvitationsOrCancellationsMode.SendToNone); 

PS:我用Outlook插件(VSTO)打開我的web應用程序找到一個可用的會議室,並更新會議項目。

一旦房間(位置)在服務器端(通過EWS)得到更新,我可以看到Outlook日曆立即反映更改,但更新不顯示在Outlook中打開的約會項目上。

我需要關閉Outlook中的約會項目並重新打開約會項目以查看更新,但仍然只能看到更新的主題,而不是位置。

要查看更新的定位,反映了那裏,我需要關閉Outlook,然後重新打開它來查看位置...

的東西去嘗試任何意見或方向將是巨大的感謝!謝謝你:-)

回答

0

經過許多小時的研究,終於明白了這一點。

這是一個已知問題,Outlook不會更新通過EWS(或從服務器端更改)所做的更改,直到您重新打開該應用程序並釋放該對象的所有引用(重新打開之前)爲止。因此,解決辦法是對Marshal.ReleaseComObject添加如下:

Marshal.ReleaseComObject(apptItem); 

釋放對象(與關閉Outlook應用程序),然後使用ENTRYID重新打開對象。

string eid = item.EntryID; 
--- release the app object --- 
var ns = application.GetNamespace("MAPI");// application.Session;// application.GetNamespace("MAPI"); 

Outlook.AppointmentItem appoinment = ns.GetItemFromID(eid) as Outlook.AppointmentItem; 

我希望這個解決方案可以幫助那些遇到同樣問題的人。