【发布时间】:2017-06-15 22:32:51
【问题描述】:
我正在尝试将大量邮件移动到另一个文件夹,该操作大约需要 5-8 分钟,具体取决于服务器的位置和要移动的项目数量。
我总是得到一个错误(504) Gateway Timeout,
使用堆栈跟踪:
Microsoft.Exchange.WebServices.Data.ServiceRequestException: The request failed. The remote server returned an error: (504) Gateway Timeout. ---> System.Net.WebException: The remote server returned an error: (504) Gateway Timeout.
at System.Net.HttpWebRequest.GetResponse()
at Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest.GetResponse()
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)
--- End of inner exception stack trace ---
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request)
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalMoveItems(IEnumerable`1 itemIds, FolderId destinationFolderId, Nullable`1 returnNewItemIds, ServiceErrorHandling errorHandling)
at Microsoft.Exchange.WebServices.Data.ExchangeService.MoveItems(IEnumerable`1 itemIds, FolderId destinationFolderId)
at EAS.Exchange.ExchangeProvider.MoveItemsToFolder(String folderUniqueId, String[] itemUniqueIds)
我试图增加 ExchangeService 的超时时间:
var ews = new Microsoft.Exchange.WebServices.Data.ExchangeService();
ews.Timeout = 900000; // 15 minutes in milliseconds
但这并不能解决问题。顺便说一句,操作在 EWS 上成功完成,之后所有项目都被移动了。
您能否推荐另一种可能的解决方案来解决此问题?
【问题讨论】:
-
您的应用程序是否托管在 IIS 上?
-
您是否尝试过小批量移动它们
-
@GlenScales 小批量工作正常。如果我没有找到延长超时的可能解决方案,我会用多线程处理拆分方法。
-
@RMadd UPD:该应用程序是使用 EWS 托管 API 2 的 Windows 服务
标签: c# asp.net web-services exchange-server exchangewebservices