约会项目的 EWS 更新位置字段不起作用
EWS update location field of an appointment item doesn't work
我使用 EWS API 2.0 更新 outlook 会议项目中的位置和主题。我可以在 Outlook 日历中看到位置和主题。但是,当我弹出约会项目时,位置是空白的,但是我仍然可以看到更新的主题。
下面是我使用的代码:
Appointment appointment = Appointment.Bind(_service, ConvertId(entryId));
appointment.Location = location;
appointment.Subject = "Server Update Subject";
appointment.Update(ConflictResolutionMode.AutoResolve, SendInvitationsOrCancellationsMode.SendToNone);
PS:我使用 outlook add-in (VSTO) 打开我的 Web 应用程序以查找可用的会议室并更新会议项目。
一旦房间(位置)在服务器端(通过 EWS)得到更新,我就可以看到 outlook 日历立即反映了变化,但更新没有显示在 outlook 中打开的约会项目上。
我需要关闭 outlook 中的约会项目和 re-open 约会项目才能看到更新,但我仍然只能看到更新的主题,而看不到位置。
要在此处查看更新后的位置,我需要关闭 Outlook 并re-open它才能查看位置...
任何关于尝试的评论或指导将不胜感激!谢谢:-)
经过数小时的研究,终于弄明白了。
这是一个已知问题,即 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;
我希望这个解决方案能帮助 运行 和我遇到同样问题的人。
我使用 EWS API 2.0 更新 outlook 会议项目中的位置和主题。我可以在 Outlook 日历中看到位置和主题。但是,当我弹出约会项目时,位置是空白的,但是我仍然可以看到更新的主题。
下面是我使用的代码:
Appointment appointment = Appointment.Bind(_service, ConvertId(entryId));
appointment.Location = location;
appointment.Subject = "Server Update Subject";
appointment.Update(ConflictResolutionMode.AutoResolve, SendInvitationsOrCancellationsMode.SendToNone);
PS:我使用 outlook add-in (VSTO) 打开我的 Web 应用程序以查找可用的会议室并更新会议项目。
一旦房间(位置)在服务器端(通过 EWS)得到更新,我就可以看到 outlook 日历立即反映了变化,但更新没有显示在 outlook 中打开的约会项目上。
我需要关闭 outlook 中的约会项目和 re-open 约会项目才能看到更新,但我仍然只能看到更新的主题,而看不到位置。
要在此处查看更新后的位置,我需要关闭 Outlook 并re-open它才能查看位置...
任何关于尝试的评论或指导将不胜感激!谢谢:-)
经过数小时的研究,终于弄明白了。
这是一个已知问题,即 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;
我希望这个解决方案能帮助 运行 和我遇到同样问题的人。