繁体   English   中英

EWS Api 给出超时和 (503) 服务器不可用

[英]EWS Api gives timeout and (503) Server Unavailable

我正在使用以下代码从我的 Office 365 帐户中获取带有 EWS api 的设置(Microsoft.Exchange.WebServices 2.2.0)的日历约会:

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:操作已在 Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest 的 System.Net.HttpWebRequest.GetResponse() 超时.GetResponse() 在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request) --- 内部异常堆栈跟踪结束 --- 在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request) 在 Microsoft .Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request) at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToFolder(FolderId folderId, PropertySet propertySet) at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToFolder[TFolder](FolderId folderId, PropertySet propertySet) 在 Microsoft.Exchange.WebServices.Data.CalendarFolder.Bind(Excha ngeService 服务,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 request) 在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request) 在 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: 底层连接已关闭:服务器关闭了预期保持活动状态的连接。 在 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 request) 在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request) 在 Microsoft.Exchange.WebServices .Data.MultiResponseServiceRequest 1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.FindItems[TItem](IEnumerable 1 parentFolderIds, SearchFilter searchFilter, String queryString, ViewBase view, Grouping groupBy, ServiceErrorHandling errorHandlingMode) at Microsoft.Exchange.WebServices .Data.Folder.InternalFindItems[TItem](SearchFilter searchFilter, ViewBase view, Grouping groupBy) 在 Microsoft.Exchange.WebServ ices.Data.CalendarFolder.FindAppointments(CalendarView 视图)

或:

服务器现在无法处理此请求。 稍后再试。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM