2

Microsoft の EWS API 1.2.1 を使用して、Exchange Server 2007 SP1 と通信しています。シリーズの特定のオカレンスを更新しようとすると、常に次のエラーが表示されます:「プロパティの設定アクションは無効です」。以下のサンプルは、成功した masterrecurrence を作成し、この masterrecurrence にバインドして、シリーズの 3 番目のシーケンスを更新しようとします。これは失敗します...

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);
    }
  }
}
4

1 に答える 1

0

関連する「変更されたオカレンスが隣接するオカレンスと交差または重複しています」というエラーが発生しました。

これは、変更された発生開始をマスター繰り返し開始の前に設定できないためだと思います (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);

すべてが機能しているようです。

最初に予定の開始を変更してから、最初に発生したものを変更し、最後のものを削除する必要があると思います。しかし、あなたが本当にそれを望んでいるかどうかはわかりません。非定期的な予定を 1 つだけ追加する方が簡単です。

于 2012-08-23T09:05:27.480 に答える