exchangewebservices - 插入交换约会时出现 EndDate 早于 StartDate 错误

标签 exchangewebservices exchange-server-2010

当我将约会插入到 Exchange 中时,出现以下问题“EndDate 早于 StartDate”,有人可以帮忙解决这个问题吗?

Appointment appt=new Appointment();
appt.Start=DateTime.Now();
appt.End=DateTime.Now().Addhours(1);
appt.Subject="Test";
appt.Save(WellKnownFolderName.Calendar);

在最后一行我遇到了问题,但我给出了正确的开始和结束日期,谁能告诉我为什么我遇到了这个问题?

注意:如果我在开始和结束日期中给出不同的日期,它将被接受。开始和结束日期应该相同,只有时间不同,在这种情况下只有我遇到了这个问题。请帮我解决这个问题

最佳答案

我今天遇到了一个非常相似的问题,但是在更新事件时。我相信我的解决方案与问题有关。

我正在更新在中欧时区创建的事件。
我的代码按以下顺序设置属性:

appt.Start = DateTime.UtcNow;
appt.End = DateTime.UtcNow.AddMinutes(30);
appt.StartTimeZone = TimeZoneInfo.FindSystemTimeZoneById("UTC");
appt.EndTimeZone = TimeZoneInfo.FindSystemTimeZoneById("UTC");

使用 Managed Api 时,我的印象是属性分配的顺序对实际操作没有影响,但在这种情况下,我发现它不是真的。

Managed Api 生成了以下 XML:

<soap:Body>
        <m:UpdateItem ConflictResolution="AlwaysOverwrite" SendMeetingInvitationsOrCancellations="SendToNone">
            <m:SavedItemFolderId>
                <t:FolderId Id="AQMkADJkAAA==" />
            </m:SavedItemFolderId>
            <m:ItemChanges>
                <t:ItemChange>
                    <t:ItemId Id="AAMkADJkZWZiODMxLWNRE" />
                    <t:Updates>
                        <t:SetItemField>
                            <t:FieldURI FieldURI="calendar:EndTimeZone" />
                            <t:CalendarItem>
                                <t:EndTimeZone Name="UTC" Id="UTC">
                                    ...
                                </t:EndTimeZone>
                            </t:CalendarItem>
                        </t:SetItemField>
                        <t:SetItemField>
                            <t:FieldURI FieldURI="calendar:Start" />
                            <t:CalendarItem>
                                <t:Start>2015-10-19T15:30:00.000Z</t:Start>
                            </t:CalendarItem>
                        </t:SetItemField>
                        <t:SetItemField>
                            <t:FieldURI FieldURI="calendar:End" />
                            <t:CalendarItem>
                                <t:End>2015-10-19T16:00:00.000Z</t:End>
                            </t:CalendarItem>
                        </t:SetItemField>
                        ...
                        <t:SetItemField>
                            <t:FieldURI FieldURI="calendar:StartTimeZone" />
                            <t:CalendarItem>
                                <t:StartTimeZone Name="UTC" Id="UTC">
                                    ...
                                </t:StartTimeZone>
                            </t:CalendarItem>
                        </t:SetItemField>
                    </t:Updates>
                </t:ItemChange>
            </m:ItemChanges>
        </m:UpdateItem>
    </soap:Body>

切换属性分配的顺序以设置时区首先为我解决了这个问题。

当事件的原始时区等于设置的时区时,也不会出现问题。就在切换时区的时候。

请注意,这并不是真正的解决方案。更好的方法是克隆托管 api 并修复库中的问题。

关于exchangewebservices - 插入交换约会时出现 EndDate 早于 StartDate 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10124551/

相关文章:

JavaMail - javax.mail.MessagingException

c# - 使用 ExchangeService 从 Exchange Server 2010 SP1 获取全局地址列表 (GAL)

c# - 如何强制对不能取消引用的对象进行垃圾回收?

c# - Folder.Bind - "Id is malformed"- Exchange Web 服务托管 API

c# - EWS foreach 所有未读邮件不起作用

c# - EWS 搜索过滤器查找发件人域 C#

powershell - 在Exchange联系人中查找附件的CID引用

c# - 使用 Exchange Web Service 2010 查找所有未读电子邮件然后标记为已读?

exchange-server-2010 - Exchange2010集线器传输环境下如何配置catch-all?

Javamail 事件监听器未收到任何事件