如何为Outlook Appointment设置时区。如果通过EWS API创建

问题描述 投票:0回答:1

我们使用Exchange Web服务API来创建约会。我们在创建期间将时区设置为本地时区。当收件人查看邀请时,这是他当地时区的正确时间,唯一的事情是Exchange在约会主体的开头添加“When”和“Where”,如下所示:

Appointment

无论最终用户的时区是什么,When的时区始终为UTC时区。这会给我们客户的最终用户带来一些困惑。从EWS API Document for Appointment.When属性来看,只有Get方法,而不是Set方法。在一次测试中,我们尝试将首选文化设置为de-de culture,因为建议使用文档,并且“When”仍以UTC时间显示。 Setting Preferred Culture

不知何故,我无法在互联网上找到任何相关信息。任何人都可以在这里说明如何在某个时区显示“何时”?

c# outlook calendar exchangewebservices
1个回答
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);
    }
© www.soinside.com 2019 - 2024. All rights reserved.