增加等待Exchange Web服务器响应的超时

时间:2017-01-30 17:05:32

标签: c# asp.net web-services exchange-server exchangewebservices

我正在尝试将大量邮件移动到另一个文件夹,操作大约需要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上成功完成,之后移动所有项目。

请您推荐另一种可能的解决方案如何解决此问题?

2 个答案:

答案 0 :(得分:0)

504错误表示远程服务器出现超时。毕竟,如果您经历了直接超时,那么任何东西都没有机会发回HTTP状态代码。

因此,问题不在于您的程序与Exchange服务之间的连接;问题是由于以下原因之一:

  1. Exchange服务与Exchange内部使用的某些其他服务之间的连接超时。您需要确定哪个组件超时,并调整特定于该系统区域的超时设置。有很多超时值得关注。你可以开始here

  2. 您对Exchange服务的访问权限由代理服务器调解,代理服务器与Exchange之间的连接超时。您可能需要调整代理服务器设置。

  3. 您可以通过检查W3C日志并搜索504来确定上述问题中的哪一个。或者你可以简单地通过它的样式告诉504代表504的样子,具体取决于你设置的方式。另一种可能性是将Exchange服务器的地址添加到代理排除列表中,看看是否有任何影响。

答案 1 :(得分:0)

错误可能是由IIS中设置的连接超时值引起的。

尝试增加值:

IIS - >右键单击您的应用程序 - >管理网站 - >高级设置 - >展开限制 - >增加连接超时