【问题标题】:EWS Api gives timeout and (503) Server UnavailableEWS Api 给出超时和 (503) 服务器不可用
【发布时间】:2020-05-07 22:31:24
【问题描述】:

我正在使用以下代码通过 EWS api 集 (Microsoft.Exchange.WebServices 2.2.0) 从我的 Office 365 帐户获取日历约会:

ExchangeService service = new ExchangeService();
service.Credentials = new NetworkCredential(mail, password);
service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
Folder DefaultCalendar = Folder.Bind(service, WellKnownFolderName.Calendar);
CalendarView calendarView = new CalendarView(fromDate, toDate);
FindItemsResults<Appointment> resultAppointments = Folder.FindAppointments(calendarView);

应用程序经常崩溃,但有以下例外:

Microsoft.Exchange.WebServices.Data.ServiceRequestException: 请求失败。操作超时---> System.Net.WebException:操作已超时 System.Net.HttpWebRequest.GetResponse() 在 Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest.GetResponse() 在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest 请求)---内部异常堆栈跟踪结束---在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest 请求)在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& 请求)在 Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() 在 Microsoft.Exchange.WebServices.Data.ExchangeService.BindToFolder(FolderId folderId,PropertySet propertySet) 在 Microsoft.Exchange.WebServices.Data.ExchangeService.BindToFolder[TFolder](FolderId folderId,PropertySet propertySet) 在 Microsoft.Exchange.WebServices.Data.CalendarFolder.Bind(ExchangeService 服务,FolderId id)

或:

Microsoft.Exchange.WebServices.Data.ServiceRequestException: 请求失败。远程服务器返回错误:(503) 服务器 不可用。 ---> System.Net.WebException: 远程服务器返回 错误:(503)服务器不可用。在 System.Net.HttpWebRequest.GetResponse() 在 Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest.GetResponse() 在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest 请求)---内部异常堆栈跟踪结束---在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest 请求)在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& 请求)在 Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() 在 Microsoft.Exchange.WebServices.Data.ExchangeService.BindToFolder(FolderId folderId,PropertySet propertySet) 在 Microsoft.Exchange.WebServices.Data.ExchangeService.BindToFolder[TFolder](FolderId folderId,PropertySet propertySet) 在 Microsoft.Exchange.WebServices.Data.CalendarFolder.Bind(ExchangeService 服务,FolderId id)

或:

Microsoft.Exchange.WebServices.Data.ServiceRequestException: 请求失败。底层连接已关闭:连接 预计保持活动状态的服务器已关闭。 ---> System.Net.WebException:底层连接已关闭:A 预期保持活动的连接被 服务器。在 System.Net.HttpWebRequest.GetResponse() 在 Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest.GetResponse() 在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest 请求)---内部异常堆栈跟踪结束---在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest 请求)在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& 请求)在 Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.FindItems[TItem](IEnumerable1 parentFolderIds, SearchFilter searchFilter, String queryString, ViewBase 视图、分组 groupBy、ServiceErrorHandling 错误处理模式)在 Microsoft.Exchange.WebServices.Data.Folder.InternalFindItems[TItem](SearchFilter searchFilter、ViewBase 视图、分组 groupBy)在 Microsoft.Exchange.WebServices.Data.CalendarFolder.FindAppointments(CalendarView 查看)

或:

服务器目前无法处理此请求。请稍后再试。

似乎有时 Office 365 服务无法访问或受到限制;我试图尝试捕获我的代码,但应用程序仍然崩溃;我认为是因为打开了一个新线程。我该如何处理这个问题?

【问题讨论】:

    标签: c# office365 exchangewebservices


    【解决方案1】:

    首先要从 Github https://github.com/OfficeDev/ews-managed-api 获取最新版本的 EWS 托管 API。您使用的版本自 2015 年以来没有更新,当时微软停止发布该库的编译版本。然而,代码已经在 GitHub 上更新了许多错误修复

    使用您使用的代码,我建议您始终设置 X-AnchorMailBox,这可能会导致 503 和超时问题,请参阅 https://blogs.msdn.microsoft.com/webdav_101/2015/05/11/best-practices-ews-authentication-and-access-issues/(即使你没有使用模拟)

    根据您的应用程序正在执行的工作量,您可能会受到限制,在这种情况下处理异常并重试非常重要。此外,Office365 邮箱在后端移动了相当多的位置,因此在这些移动过程中经常看到邮箱无法访问的时间段

    我尝试尝试捕获我的代码,但应用程序仍然崩溃;我认为是因为打开了一个新线程。我该如何处理这个问题?

    不,它不跨越新线程,您可以自己在 GitHub 上查看源代码,因此您的异常处理肯定有另一个问题。

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 1970-01-01
      • 2019-10-30
      • 2011-08-04
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2017-01-14
      相关资源
      最近更新 更多