2012-07-11 27 views
2

我正在使用Microsoft的EWS API 1.2.1與Exchange Server 2007 SP1進行通信。當我嘗試更新系列中的特定事件時,我總是得到錯誤:「設置操作對於屬性無效」。下面的示例創建了一個成功的masterrecurrence,然後我綁定到這個masterrecurrence並嘗試更新系列中的第3個序列。這失敗了...EWS:在更新系列更新時,設置操作對屬性無效

this is the stack trace: 

Microsoft.Exchange.WebServices.Data.ServiceResponseException was unhandled 
Message=Set action is invalid for property. 
Source=Microsoft.Exchange.WebServices 
StackTrace: 
    at Microsoft.Exchange.WebServices.Data.ServiceResponse.InternalThrowIfNecessary() 
    at Microsoft.Exchange.WebServices.Data.ServiceResponse.ThrowIfNecessary() 
    at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() 

有人可以幫我解決這個問題嗎?提前致謝!!

下面你會發現我設置的完整測試代碼。

謝謝,最好的問候!

迪米特里

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.Exchange.WebServices.Data; 
using System.Security.Cryptography.X509Certificates; 
using System.Net.Security; 

namespace EWS_testWithRecurrences 
{ 
    class Program 
    { 


    static void Main(string[] args) 
    { 
     ExchangeService _service = new ExchangeService(ExchangeVersion.Exchange2007_SP1, TimeZoneInfo.Utc); 
     string ls_master = string.Empty; 

     // SSL - security (for accademius sake) 
     System.Net.ServicePointManager.ServerCertificateValidationCallback = 
      delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) 
      { 
       return true; 
      }; 

     _service.Url = new Uri("https://exchangeserver/EWS/exchange.asmx"); 
     _service.Credentials = new System.Net.NetworkCredential("username", "password", "domain"); 


     // Add master for accedemius sake 
     Appointment app = new Appointment(_service); 
     app.Subject = "Weekly on friday!"; 
     app.Start = new DateTime(2012, 7, 13, 10, 0,0); 
     DayOfTheWeek[] days = new DayOfTheWeek [] { DayOfTheWeek.Friday }; 
     app.End = new DateTime(2012, 7, 13, 10, 0, 0).AddHours(2); 
     app.Recurrence = new Recurrence.WeeklyPattern(app.Start.Date, 1, days); 
     app.Recurrence.StartDate = app.Start.Date; 
     app.Recurrence.NumberOfOccurrences = 10; 
     // Save: works! 
     app.Save(); 
     ls_master = app.Id.UniqueId; 

     // Occurrence exception (bind to master) and change the 3rd series in the sequence 
     Appointment occurrence = Appointment.BindToOccurrence(_service, new ItemId(ls_master),3); 
     occurrence.Subject = "Urgent status update"; 
     occurrence.Start = new DateTime(2012, 7, 11, 14, 0, 0); 
     occurrence.End = new DateTime(2012, 7, 11, 14, 0, 0).AddHours(2); 
     occurrence.StartTimeZone = TimeZoneInfo.Utc; 
     // Save ==> this fails! 
     occurrence.Update(ConflictResolutionMode.AlwaysOverwrite); 
    } 
    } 
} 

回答

0

我有一個相關的「修飾的發生交叉或重疊的相鄰的發生」錯誤。

我想這是因爲修改後的occurence開始不能在主復發開始(2012-07-13> 2012-07-11)前設置:

app.Start = new DateTime(2012, 7, 13, 10, 0,0); 
... 
occurrence.Start = new DateTime(2012, 7, 11, 14, 0, 0); 

改變,要經過:

occurrence.Start = occurrence.Start.AddHours(-6); 

一切似乎都在工作。

我想你應該先改變約會開始,然後改變它的第一次出現並刪除最後一次。但我不確定你是否真的想要這樣。只需添加一個不重複的約會就會更容易。