2017-05-24 13 views
0

エンタープライズExchangeアカウント内に新しいカレンダーを作成したいが、常に同じ「アクセス拒否」例外を取得する 'System.UnauthorizedAccessException 'はmscorlib.ni.dllで発生しましたが、ユーザーコードで処理されませんでした 追加情報:アクセスが拒否されました。 (HRESULTからの例外:0x80070005(E_ACCESSDENIED))これは私のコード、この質問のために簡略化され、多く[UWP] [C#] ExchangeタイプのUserDataAccountで新しいカレンダーを作成する

です:

private const string ExchangeActiveSync = "{6833942B-ABDA-4C20-9757-4F9252396BD4}"; 
UserDataAccountStore userDataAccountStore = await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AllAccountsReadOnly); 

//Read-only access to app user data accounts and system user data accounts. 
//AllAccountsReadOnly = 0, 
//Read/write access to the current app's user data accounts. 
//AppAccountsReadWrite = 1 
//So AllAccountsReadWrite is missing :(

IReadOnlyList<UserDataAccount> listUserAccounts = await userDataAccountStore.FindAccountsAsync(); 

string accountId= (from account in listUserAccounts where account.DeviceAccountTypeId.Equals(ExchangeActiveSync) select account.Id).FirstOrDefault(); 
//accountId = "29,0,af"; 
string calendarName = Package.Current.DisplayName; 
//calendarName = "Test Calendar" 

AppointmentStore appointmentStore = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AllCalendarsReadWrite); 

var calendar = await appointmentStore.CreateAppointmentCalendarAsync(calendarName, accountId); 
//Here the exception is thrown 

calendar.OtherAppReadAccess = AppointmentCalendarOtherAppReadAccess.Full; 
calendar.OtherAppWriteAccess = AppointmentCalendarOtherAppWriteAccess.None; 
await calendar.SaveAsync(); 

は、私も私のpackage.appxmanifestに必要な制限された機能を追加したが

<rescap:Capability Name="userDataSystem" /> 
<rescap:Capability Name="userDataAccountsProvider" /> 
<rescap:Capability Name="appointmentsSystem" /> 

私は主な問題はUserDataAccountStoreAccessType enumにあると思います。ここでは、 "AllAccountsReadWrite"(カレンダーのアクセスタイプのような)値が欠けています。私はこれが大きな制限だと思います。アカウントのカスタムカレンダーを作成できないのはなぜですか?

私はあなたのサポートのための

どうもありがとうございました。

よろしく、

?このための任意のソリューションがありますので、悪い:(

、この制限は、システムのカレンダーアプリでもあることに気づきました

私は私のエンタープライズエクスチェンジクラブ内の新しいカレンダーを作成したいフラビオ

答えて

0

私はいつも同じ "アクセス拒否"例外を取得します。mscorlib.ni.dllで 'System.UnauthorizedAccessException'タイプの例外が発生しましたが、ユーザーコードで処理されませんでした。追加情報:アクセスが拒否されました。 (HRESULTからの例外:0x80070005(E_ACCESSDENIED))

あなたはappointmentstoreへのアクセスを得るためにAppointmentStoreAccessType.AllCalendarsReadWriteを使用しています。そして、CreateAppointmentCalendarAsync(calendarName, accountId)メソッドを使ってカレンダーを作成しました。しかしあなたのアカウントはReadOnlyです。したがって、「アクセス拒否」の例外がスローされます。

既存のExchangeアカウントに新しいカレンダーを作成する場合は、自分の側でテストして、現在は許可されていません。メールアカウントに属する既存の予定表に新しい予定を作成する場合は、次のコードを参照してください。

IReadOnlyList<AppointmentCalendar> appointmentCalendars = await appointmentStore.FindAppointmentCalendarsAsync(); 
foreach (AppointmentCalendar calendar in appointmentCalendars) 
{ 
    if(calendar.DisplayName=="Calendar") 
    { 
     AppointmentCalendar appointmentcalendar = await appointmentStore.GetAppointmentCalendarAsync(calendar.LocalId); 
     await appointmentcalendar.SaveAppointmentAsync(appointment); 
    } 
} 
関連する問題