0

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

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 配置。请指教如何解决,谢谢。

4

2 回答 2

1

在我的情况下,Exchange 2013 CU12,我调整了 IIS 的 SSL 设置,并从Microsoft Remote Connectivity Analyzer获得了积极响应。

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

在此处输入图像描述

于 2020-02-06T17:03:09.353 回答
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否则当邮件文件夹计数超过 1000 时,您的代码将失败。

在您调整任何服务器设置之前,我建议您使用 EWS 编辑器https://github.com/dseph/EwsEditor/releases之类的工具测试 EWS ,如果可行但您的代码不起作用,那么您知道问题出在源头上,而不是然后是目的地。很少有你应该更改 Exchange 服务器上的 IIS 设置以处理这种不必要的请求(也许大附件是我唯一能想到的)。所以我会看看最近在该服务器上安装了什么。

于 2019-01-02T23:15:40.503 回答