在搜索 allitems 文件夹时,出现“此 xml 文档中禁止 dtd”错误。下面是我正在执行的示例代码
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
string exchangeURL = "ExchangeURL";
Uri myUri = new Uri(exchangeURL);
service.TraceEnabled = true;
service.Url = myUri;
service.UseDefaultCredentials = true;
service.Credentials = new WebCredentials("email", "password");
//service.AutodiscoverUrl(empMail.PrimaryEmail);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, empMail.EmployeeEmail);
//Certificate validation handling
ServicePointManager.ServerCertificateValidationCallback += (se, cert, chain, sslerror) =>
{
return true;
};
EmailMessage message;
PropertySet propertySet;
Mailbox mailBox = new Mailbox("Email");
ItemView itemView = new ItemView(1);
itemView.Traversal = ItemTraversal.Shallow;
//Try to get 'Allitems' folder so that we could search items in all folders
FolderId fid = new FolderId(WellKnownFolderName.Root);
FolderView fv = new FolderView(1);
fv.Traversal = FolderTraversal.Shallow;
ExtendedPropertyDefinition epd = new ExtendedPropertyDefinition(13825, MapiPropertyType.Integer);
SearchFilter sf = new SearchFilter.IsEqualTo(epd, "2");
SearchFilter sf2 = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "allitems");
SearchFilter.SearchFilterCollection sfc = new SearchFilter.SearchFilterCollection(LogicalOperator.And);
sfc.Add(sf);
sfc.Add(sf2);
FindFoldersResults findAllItemsFolderresult = service.FindFolders(fid, sfc, fv);
这已经工作了很多年,当我们更改服务器时,这工作了几个月,然后开始出现此错误。请告诉我此错误的原因及其解决方案。
我建议您启用跟踪https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-trace-requests-responses-to-troubleshoot-ews- Managed-api-applications 并查看导致问题的响应。您可能会收到非 EWS 回复,例如来自代理或防火墙等
有时是由于防火墙设置所致。 我的 Exchange URL 是“https://mail.{websitedomainname}.com/EWS/Exchange.asmx”,我收到消息“此 xml 文档中禁止 DTD”。 将 URL 更改为“https://xx.xx.x.xx/EWS/Exchange.asmx”,即使用公共 IP,解决了问题。