我正在尝试将大量邮件移动到另一个文件夹,操作大约需要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上成功完成,之后移动所有项目。
请您推荐另一种可能的解决方案如何解决此问题?
答案 0 :(得分:0)
504错误表示远程服务器出现超时。毕竟,如果您经历了直接超时,那么任何东西都没有机会发回HTTP状态代码。
因此,问题不在于您的程序与Exchange服务之间的连接;问题是由于以下原因之一:
Exchange服务与Exchange内部使用的某些其他服务之间的连接超时。您需要确定哪个组件超时,并调整特定于该系统区域的超时设置。有很多超时值得关注。你可以开始here。
您对Exchange服务的访问权限由代理服务器调解,代理服务器与Exchange之间的连接超时。您可能需要调整代理服务器设置。
您可以通过检查W3C日志并搜索504来确定上述问题中的哪一个。或者你可以简单地通过它的样式告诉504代表504的样子,具体取决于你设置的方式。另一种可能性是将Exchange服务器的地址添加到代理排除列表中,看看是否有任何影响。
答案 1 :(得分:0)
错误可能是由IIS中设置的连接超时值引起的。
尝试增加值:
IIS - >右键单击您的应用程序 - >管理网站 - >高级设置 - >展开限制 - >增加连接超时