Exchange Web服务-请求失败。远程服务器返回错误:(413)请求实体太大

时间:2019-01-02 17:02:59

标签: c# exchangewebservices exchange-server-2016

我有这个简单的代码段,在这里我尝试从特定邮箱中提取文件夹

ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;

ExchangeService service = new ExchangeService();

service.Credentials = new WebCredentials("ADMIN_USER@corp.contoso.com", "********");

Mailbox mb = new Mailbox("chris@corp.contoso.com");
FolderId fid = new FolderId(WellKnownFolderName.MsgFolderRoot, mb); 

// Set the URL.
service.Url = new Uri("https://<exchange>/EWS/Exchange.asmx");

var findResults = service.FindFolders(
    fid,
    new FolderView(int.MaxValue) { Traversal = FolderTraversal.Deep }
);

foreach(var result in findResults)
{
    //result.Load();
    Console.WriteLine(result.DisplayName);
}

之前它运行良好,但是今天早晨它开始返回此错误

  

Microsoft.Exchange.WebServices.Data.ServiceRequestException:请求失败。远程服务器返回错误:(413)请求实体太大。 ---> System.Net.WebException:远程服务器返回错误:(413)请求实体太大。

我尝试了不同的方法来解决它-主要是通过增加请求实体的大小限制,但这没有帮助。我认为代码很好,但是需要调整VM或Exchange配置。谢谢,请提出解决方法的建议。

2 个答案:

答案 0 :(得分:1)

您不应该这样做

new FolderView(int.MaxValue) { Traversal = FolderTraversal.Deep }

无论如何它都将无法工作,因为EWS返回的最大项目数将是1000,因此您应该在代码https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-perform-paged-searches-by-using-ews-in-exchange中实现正确的分页,否则当Mail文件夹数超过1000时,代码将失败。

在调整任何服务器设置之前,我建议您使用EWS编辑器https://github.com/dseph/EwsEditor/releases之类的工具测试EWS,如果可以,但是您的代码不知道问题出在源而不是目标。在极少数情况下,对于这种类型的请求,您应该在Exchange服务器上更改IIS设置,这种情况是不必要的(也许大型附件是我可以考虑的唯一附件)。因此,我将看看该服务器上最近还安装了什么。

答案 1 :(得分:1)

在我的Exchange 2013 CU12中,我调整了IIS的SSL设置,并从Microsoft Remote Connectivity Analyzer得到了肯定的答复。

在默认网站的EWS子文件夹下,我将“ SSL设置”项“客户端证书”从“接受”更改为“忽略”。

enter image description here