簡體   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