Я пытаюсь что-то новое и получил старый проект, работающий с EWS (Exchange WebService), и я пытаюсь отладить, поскольку в настоящее время он работает неправильно. Я получаю следующую ошибку:
fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
An unhandled exception has occurred while executing the request.
System.ArgumentException: An item with the same key has already been added. Key: Dlt/1916
at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
at Microsoft.Exchange.WebServices.Data.TimeZoneTransitionGroup.InitializeFromAdjustmentRule(AdjustmentRule adjustmentRule, TimeZonePeriod standardPeriod)
at Microsoft.Exchange.WebServices.Data.TimeZoneDefinition..ctor(TimeZoneInfo timeZoneInfo)
at Microsoft.Exchange.WebServices.Data.ExchangeServiceBase.get_TimeZoneDefinition()
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.WriteToXml(EwsServiceXmlWriter writer)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.EmitRequest(IEwsHttpWebRequest request)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.BuildEwsHttpWebRequest()
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request)
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable`1 items, FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode, ServiceErrorHandling errorHandling)
at Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode)
at Microsoft.Exchange.WebServices.Data.Appointment.Save(FolderId destinationFolderId, SendInvitationsMode sendInvitationsMode)
at SomeClassNameAndSomePath:TaskController.cs:line 246
at lambda_method(Closure , Object , Object[] )
at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextExceptionFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ExceptionContext context)
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
warn: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[2]
The response has already started, the error page middleware will not be executed.
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware:Error: An unhandled exception has occurred while executing the request.
Я получаю это, когда пытаюсь создать простую встречу в Outlook 365. Код выглядит так:
var mainCalendarItem = new Appointment(service) {
Subject = "test",
Body = "we have something here"
};
mainCalendarItem.Save(mainCalendar.Id, SendInvitationsMode.SendToNone);
Кажется, что вся информация действительна, API, кажется, работает, но я сейчас работаю второй день, чтобы выяснить, в чем причина. Любая помощь приветствуется. Заранее спасибо.
Некоторые отзывы о календаре: он пуст. Я использую последнюю версию библиотеки EWS :
Некоторое время я думал, что нашел решение, но как только установил TimeZoneInfo (часовой пояс), отличный от UTC, ошибка возвращается.
Поскольку я уже опубликовал решение, я снова удалил его, это было сообщение:
https://social.msdn.microsoft.com/Forums/exchange/en-US/fff93bb4-bbb7-4646-a704-4131040ffe4b/ews-managed-api-argument-exception-on-reading-calendar-items?referrer=https://social.msdn.microsoft.com/Forums/exchange/en-US/fff93bb4-bbb7-4646-a704-4131040ffe4b/ews-managed-api-argument-exception-on-reading-calendar-items?forum=exchangesvrdevelopment
кто-то, что-то рассказывал о часовом поясе, вызывал у него проблему, а также, за моим исключением, что-то было в часовом поясе, я изменил инициализацию ExchangeService на один с часовым поясом UTC:
var service = new ExchangeService(ExchangeVersion.Exchange2013_SP1, TimeZoneInfo.Utc)