我想使用 Outlook REST API 从Exchange Server 2019 CU2中读取日历项目。
但是,一旦我添加了
Prefer: odata.track-changes
的HTML标头用于获取deltaToken
,服务器会回答:
错误500
{"error":{"code":"ErrorInternalServerError","message":"Window end time must be greater than start time REST APIs for this mailbox are currently in preview. You can find more information about the preview REST APIs at https://dev.outlook.com/."}}
我可以在此交换服务器实例上的任何帐户下,使用此代码段重现错误。
$url = "https://myexchangeserver/api/v2.0/me/calendarview?startDateTime=2004-08-21T22:00:00Z&endDateTime=2034-08-21T21:59:59Z&$expand=singleValueExtendedProperties($filter%3DPropertyId%20eq%20%27Binary%200x0FFF%27)"
$output = "C:\temp\1.json"
$wc = New-Object System.Net.WebClient
$wc.Credentials = new-object System.Net.NetworkCredential("myusername", "mypassword", "mydomain")
$wc.Headers.Clear();
$wc.Headers.Add("Prefer: odata.track-changes")
$wc.DownloadFile($url, $output)
我多次检查startDateTime
和endDateTime
,但是开始小于结束。
我搜索了 Exchange Server日志,并发现了此错误堆栈:
DispatchException=System.ArgumentException: Window end time must be greater than start time
bei Microsoft.Exchange.Data.ApplicationLogic.SyncCalendar.SyncCalendar..ctor(CalendarSyncState syncState IStoreSession session StoreObjectId folderId GetPropertiesToFetchDelegate getPropertiesToFetchDelegate ExDateTime windowStart ExDateTime windowEnd Boolean includeAdditionalDataInResponse Int32 maxChangesReturned Boolean adjustStartAndEndForAllDayEvents)
bei Microsoft.Exchange.Services.Wcf.SyncCalendar.InternalExecute()
bei Microsoft.Exchange.Services.Wcf.ServiceCommand`1.DetectDuplicatedCallOrExecute()
bei Microsoft.Exchange.Services.Wcf.ServiceCommand`1.Execute()
bei Microsoft.Exchange.Services.ExchangeService.ExchangeServiceBase.<>c__DisplayClass338_0`1.<InvokeOwsServiceCommand>b__0()
bei Microsoft.Exchange.Services.ExchangeService.ExchangeServiceBase.CallWithExceptionHandling(ExecutionOption executionOption Action action)
bei Microsoft.Exchange.Services.ExchangeService.ExchangeServiceBase.InvokeOwsServiceCommand[TResponse](Func`1 commandCreator ExecutionOption executionOption Boolean throwOnNullResponse)
bei Microsoft.Exchange.Diagnostics.RequestDetailsLoggerBase`1.TrackLatency[TResult](Enum latencyMetadata Func`1 method)
bei Microsoft.Exchange.Services.OData.Model.CalendarViewSyncCommand`1.<>c__DisplayClass5_0.<SyncCalendar>b__1()
bei Microsoft.Exchange.Services.ExchangeService.ExchangeServiceHelper.HandleResponseCode(ResponseCodeType responseCodeType Action delegateAction Action`1 handlerAction)
bei Microsoft.Exchange.Services.OData.Model.CalendarViewSyncCommand`1.SyncCalendar(IExchangeService exchangeService PagingTokenFlags flags String& skipToken String& deltaToken)
bei Microsoft.Exchange.Services.OData.Model.CalendarViewTrackChangesCommand.InternalExecute(IExchangeService exchangeService)
bei Microsoft.Exchange.Services.OData.ExchangeServiceCommand`2.InternalExecute()
bei Microsoft.Exchange.Services.OData.ODataCommand`2.<Execute>b__9_0()
bei Microsoft.Exchange.Diagnostics.RequestDetailsLoggerBase`1.TrackLatency[TResult](Enum latencyMetadata Func`1 method)
bei Microsoft.Exchange.Services.OData.EntityContainersCommand`2.Execute()
bei Microsoft.Exchange.Services.OData.Web.RequestBroker.<>c__DisplayClass2_0.<Execute>b__0()
bei Microsoft.Exchange.Services.Diagnostics.ServicesPerformanceTracker.RunOperationWithTrackingADAndRpcPerformance(Action method Enum adCount Enum adLatency Enum rpcCount Enum rpcLatency)
bei Microsoft.Exchange.Services.OData.Web.RequestBroker.Execute(ODataRequest request)
bei Microsoft.Exchange.Services.OData.Web.RequestBroker.Dispatch(HttpContextBase httpContext AsyncCallback asyncCallback CheckpointTracker checkpointTracker ServiceModel serviceModel IComponentConfiguration`1 configuration);ServiceDiagnostics_ReportException=System.ArgumentException: Window end time must be greater than start time
bei Microsoft.Exchange.Data.ApplicationLogic.SyncCalendar.SyncCalendar..ctor(CalendarSyncState syncState IStoreSession session StoreObjectId folderId GetPropertiesToFetchDelegate getPropertiesToFetchDelegate ExDateTime windowStart ExDateTime windowEnd Boolean includeAdditionalDataInResponse Int32 maxChangesReturned Boolean adjustStartAndEndForAllDayEvents)
bei Microsoft.Exchange.Services.Wcf.SyncCalendar.InternalExecute()
bei Microsoft.Exchange.Services.Wcf.ServiceCommand`1.DetectDuplicatedCallOrExecute()
bei Microsoft.Exchange.Services.Wcf.ServiceCommand`1.Execute()
bei Microsoft.Exchange.Services.ExchangeService.ExchangeServiceBase.<>c__DisplayClass338_0`1.<InvokeOwsServiceCommand>b__0()
bei Microsoft.Exchange.Services.ExchangeService.ExchangeServiceBase.CallWithExceptionHandling(ExecutionOption executionOption Action action)
bei Microsoft.Exchange.Services.ExchangeService.ExchangeServiceBase.InvokeOwsServiceCommand[TResponse](Func`1 commandCreator ExecutionOption executionOption Boolean throwOnNullResponse)
bei Microsoft.Exchange.Diagnostics.RequestDetailsLoggerBase`1.TrackLatency[TResult](Enum latencyMetadata Func`1 method)
bei Microsoft.Exchange.Services.OData.Model.CalendarViewSyncCommand`1.<>c__DisplayClass5_0.<SyncCalendar>b__1()
bei Microsoft.Exchange.Services.ExchangeService.ExchangeServiceHelper.HandleResponseCode(ResponseCodeType responseCodeType Action delegateAction Action`1 handlerAction)
bei Microsoft.Exchange.Services.OData.Model.CalendarViewSyncCommand`1.SyncCalendar(IExchangeService exchangeService PagingTokenFlags flags String& skipToken String& deltaToken)
bei Microsoft.Exchange.Services.OData.Model.CalendarViewTrackChangesCommand.InternalExecute(IExchangeService exchangeService)
bei Microsoft.Exchange.Services.OData.ExchangeServiceCommand`2.InternalExecute()
bei Microsoft.Exchange.Services.OData.ODataCommand`2.<Execute>b__9_0()
bei Microsoft.Exchange.Diagnostics.RequestDetailsLoggerBase`1.TrackLatency[TResult](Enum latencyMetadata Func`1 method)
bei Microsoft.Exchange.Services.OData.EntityContainersCommand`2.Execute()
bei Microsoft.Exchange.Services.OData.Web.RequestBroker.<>c__DisplayClass2_0.<Execute>b__0()
bei Microsoft.Exchange.Services.Diagnostics.ServicesPerformanceTracker.RunOperationWithTrackingADAndRpcPerformance(Action method Enum adCount Enum adLatency Enum rpcCount Enum rpcLatency)
bei Microsoft.Exchange.Services.OData.Web.RequestBroker.Execute(ODataRequest request)
bei Microsoft.Exchange.Services.OData.Web.RequestBroker.Dispatch(HttpContextBase httpContext AsyncCallback asyncCallback CheckpointTracker checkpointTracker ServiceModel serviceModel IComponentConfiguration`1 configuration);
如何摆脱此错误500?