Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 增加等待Exchange Web服务器响应的超时时间_C#_Asp.net_Web Services_Exchange Server_Exchangewebservices - Fatal编程技术网

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

C# 增加等待Exchange Web服务器响应的超时时间,c#,asp.net,web-services,exchange-server,exchangewebservices,C#,Asp.net,Web Services,Exchange Server,Exchangewebservices,我正在尝试将大量邮件移动到另一个文件夹,操作大约需要5-8分钟,具体时间取决于服务器的位置和要移动的邮件数量。 我总是收到一个错误(504)网关超时, 使用堆栈跟踪: Microsoft.Exchange.WebServices.Data.ServiceRequestException: The request failed. The remote server returned an error: (504) Gateway Timeout. ---> System.Net.WebExc

我正在尝试将大量邮件移动到另一个文件夹,操作大约需要5-8分钟,具体时间取决于服务器的位置和要移动的邮件数量。 我总是收到一个错误
(504)网关超时
, 使用堆栈跟踪:

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上成功完成,之后所有项目都将移动


您能推荐另一种可能的解决方案来解决此问题吗?

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

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

  • Exchange服务和Exchange内部使用的某些其他服务之间的连接正在超时。您需要确定哪个组件正在超时,并调整特定于该系统区域的超时设置。有很多暂停时间要看。你可以开始

  • 您对Exchange服务的访问由代理服务器进行调解,代理服务器与Exchange之间的连接正在超时。您可能需要调整代理服务器设置


  • 通过检查W3C日志并搜索504,您可以确定上面哪一个是问题所在。或者,您可以简单地通过其样式来判断504来自代理时的外观,这取决于您的设置方式。另一种可能是将Exchange服务器的地址添加到您的代理排除列表中,并查看是否有任何影响。

    您的应用程序是否托管在IIS上?您是否尝试将其移动到较小的位置batches@GlenScales小批量工作正常。如果我找不到延长超时的可能解决方案,我将使用多线程处理来拆分方法。@RMadd UPD:该应用程序是一个使用EWS托管API 2的windows服务。我不使用代理,我只使用windows服务中的EWS托管API 2,因此我想应该以某种方式配置Exchange服务器。我没听错吧?