我们有一个适用于 Outlook 的 VSTO 插件,它支持预订由我们的云系统管理的资源。此外,我们还支持在 Exchange 中作为房间提供的资源,以支持与其他系统的集成。
当我们执行此类房间的预订时,加载项会将房间对应的 Exchange 电子邮件地址添加给收件人,因此它也会在 Exchange 中被预订。
这过去可以正常工作,但现在我们收到了客户的报告,他们无法再通过 Exchange 集成为资源创建预订。他们收到的错误完全没有帮助:
System.ArgumentException: Der gik desværre noget galt. Du kan prøve igen.
ved Microsoft.Office.Interop.Outlook._AppointmentItem.Save()
(英文:“出了点问题。你可以再试一次”)
当加载项在添加一些自定义属性后尝试保存项目时,会发生这种情况。我认为错误是由将 Exchange 房间添加到收件人的加载项触发的,因为没有 Exchange 集成的资源不会发生这种情况。
这是我们用来添加收件人的代码:
var rec = ...; // custom DTO with recipient info
string recipientInfo = string.IsNullOrEmpty(rec.Email)
? rec.OutlookName
: rec.Email;
var recRecip = appointment.Recipients.Add(recipientInfo);
recRecip.Type = rec.RecipientType;
if (Current.Settings.IsEnabled(FeatureFlag.ResolveAddedRecipients))
{
using (LogHelper.TimedTask($"resolving recipient [{rec}]", Log))
{
recRecip.Resolve();
}
}
我可以从日志中看到,房间收件人有电子邮件地址,所以上面的代码将通过电子邮件添加。此外,启用了解析收件人的功能标志,因此代码将在之后调用 resolve。
这里可能出了什么问题?
编辑:他们的 Outlook 版本是 16.0.0.5071。