我有这个简单的代码段,在这里我尝试从特定邮箱中提取文件夹
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配置。谢谢,请提出解决方法的建议。
答案 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设置”项“客户端证书”从“接受”更改为“忽略”。