Sharepoint 2010 更新约会时时区更改为UTC

Sharepoint 2010 更新约会时时区更改为UTC,sharepoint-2010,exchangewebservices,exchange-server-2010,Sharepoint 2010,Exchangewebservices,Exchange Server 2010,我正在使用EWS 1.2发送约会。在创建新约会时,时区会正确显示在通知邮件上,但在更新同一约会时,时区会重置为UTC 有人能帮我解决这个问题吗 下面是复制问题的示例代码: ExchangeService服务=新的ExchangeService(ExchangeVersion.Exchange2010_SP1,TimeZoneInfo.FindSystemTimeZoneById(“东部标准时间”); service.Credentials=新的WebCredentials(“ews_日历”,密码

我正在使用EWS 1.2发送约会。在创建新约会时,时区会正确显示在通知邮件上,但在更新同一约会时,时区会重置为UTC

有人能帮我解决这个问题吗

下面是复制问题的示例代码:

ExchangeService服务=新的ExchangeService(ExchangeVersion.Exchange2010_SP1,TimeZoneInfo.FindSystemTimeZoneById(“东部标准时间”);
service.Credentials=新的WebCredentials(“ews_日历”,密码,“acme”);
service.Url=新的Uri(“https://acme.com/EWS/Exchange.asmx");
预约新预约=新预约(服务);
newAppointment.Subject=“测试对象”;
newAppointment.Body=“测试机构”;
newAppointment.Start=新日期时间(2012,03,27,17,00,0);
newAppointment.End=newAppointment.Start.AddMinutes(30);
newAppointment.RequiredAttenders.Add(“tin。tin@acme.com");
//与会者使用东部时间(美国和加拿大)时区(UTC-05:00)获取此约会的通知邮件
//以下是与会者收到的通知内容:
//时间:2012年3月27日星期二下午5:00-5:30。(UTC-05:00)东部时间(美国和加拿大)
newAppointment.Save(SendInvitationMode.SendToAllAndSaveCopy);
//取消现有约会
string itemId=newAppointment.Id.ToString();
Appointment existingAppointment=Appointment.Bind(服务,新项目ID(项目ID));
//与会者使用UTC时区获取此约会的通知邮件
//以下是与会者收到的通知内容:
//时间:2012年3月27日星期二晚上11:00-11:30。UTC
现有约会.更新(冲突解决模式.AlwaysOverwrite,SendInvitations或CancellationMode.SendToAllAndSaveCopy);

您需要设置
约会模式.StartTimeZone
并在绑定
现有约会时将其作为属性对象的一部分进行绑定,如下所示:


默认绑定时区似乎是UTC。

使用另一个重载
Bind()
进行尝试,该重载允许显式指定要加载的属性。基本上在
Bind()
的第三个参数中指定所有
时区
特定属性定义,关于MSDN的论文:

使用现有约会的唯一标识符绑定到该约会。这个 以下代码显示如何绑定到现有约会,请提供 通过使用 ExchangeService对象命名为service,并请求 属性,包括日期时间属性和时区 财产。ItemId已缩短以保持可读性。对于 本例的目的是假设服务对象的作用域为 到太平洋标准时间(PST)时区

var appt=appoint.Bind(
服务
新项目ID(项目ID),
新物业(
BasePropertySet.i仅限,
AppointmentSchema.Start,
AppointmentSchema.MemberDueby,
任命模式。结束,
AppointmentSchema.StartTimeZone,
AppointmentSchema.EndTimeZone,
任命模式(时区);
appt.StartTimeZone=TimeZoneInfo.FindSystemTimeZoneById(“协调世界时”);
appt.EndTimeZone=TimeZoneInfo.FindSystemTimeZoneById(“协调世界时”);
附件更新(
冲突解决模式AlwaysOverwrite,
发送邀请或取消安装模式。发送到局域网存储副本);
应用加载(新属性集)(
BasePropertySet.i仅限,
AppointmentSchema.Start,
AppointmentSchema.MemberDueby,
任命模式。结束,
AppointmentSchema.StartTimeZone,
AppointmentSchema.EndTimeZone,
任命模式(时区);
您还可以在下面找到有用的MSDN操作指南:

  • 你的情况:

我按照您的建议设置了AppointmentSchema.StartTimeZone,但EWS仍在UTC时区发送通知邮件。@FirozAnsari理解。同样,在上面的代码中为
newAppointment
绑定时会发生什么?在EWS for Exchange 2010中,似乎涵盖了许多有关此确切问题和功能的案例。除非你能收集到更多关于服务器属性的信息,否则我相信用一个定义良好的时区连接是最合适的做法。谢谢戈麦斯先生。对于newAppointment,通知时区是合适的。我唯一的问题是更新现有的约会。我阅读了这篇文章,这篇文章解释了如何将开始和结束日期转换为特定的时区。我不确定在调用existingAppointment.Update时如何转换日期。再次感谢您的帮助。@FirozAnsari:您总是想要相同的时区吗?如果是这样的话,您是否尝试过将其显式设置在您正在更新的版本上?也许它没有被正确提取。
// Get an existing calendar item, requesting the Id, Start, and 
//  StartTimeZone properties.
PropertySet props = new PropertySet(
      AppointmentSchema.Id, 
      AppointmentSchema.Start, 
      AppointmentSchema.StartTimeZone);
Appointment appt = Appointment.Bind(service, new ItemId("AQMkA="), props);