我们正在使用Exchange Web服务API创建约会。在创建过程中,我们将时区设置为本地时区。收件人查看邀请时,是在当地时区的正确时间,唯一的事情是Exchange会在约会正文的开头添加“ When”和“ Where”,如下所示:
When的时区始终处于UTC时区,无论最终用户的时区是什么。这给我们客户的最终用户造成了一些困惑。在EWS API Document for Appointment.When属性中,只有Get方法,而没有Set方法。在一项测试中,我们尝试根据建议的文档将“首选区域性”设置为“删除区域性”,并且仍在UTC时间显示“何时”。
以某种方式,我无法在互联网上找到任何相关信息。有人可以在这里阐明如何在特定时区显示“何时”吗?
答案 0 :(得分:1)
您所查看的内容在消息正文中被称为下级文本,通常在更新约会时会出现此问题,您似乎正在将其作为发布图像的最后一行。问题是因为未将时区作为更新请求的一部分发送,服务器会将下层文本设置为utc。解决此问题的一种方法是,您可以使用
手动添加TimeZoneContext标头OnSerializeCustomSoapHeaders事件例如
service.OnSerializeCustomSoapHeaders += service_OnSerializeCustomSoapHeaders;
appointment.Update(ConflictResolutionMode.AlwaysOverwrite, SendInvitationsOrCancellationsMode.SendToAllAndSaveCopy);
service.OnSerializeCustomSoapHeaders -= service_OnSerializeCustomSoapHeaders;
static void service_OnSerializeCustomSoapHeaders(XmlWriter writer)
{
writer.WriteRaw(Environment.NewLine + " <t:TimeZoneContext><t:TimeZoneDefinition Id=\"" + TimeZone.CurrentTimeZone.StandardName + "\"/></t:TimeZoneContext>" + Environment.NewLine);
}