EWS 托管 API 获取错误“此 xml 文档中禁止 DTD dtd”

问题描述 投票:0回答:2

在搜索 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);

这已经工作了很多年,当我们更改服务器时,这工作了几个月,然后开始出现此错误。请告诉我此错误的原因及其解决方案。

c# exchange-server exchangewebservices
2个回答
1
投票

我建议您启用跟踪https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-trace-requests-responses-to-troubleshoot-ews- Managed-api-applications 并查看导致问题的响应。您可能会收到非 EWS 回复,例如来自代理或防火墙等


0
投票

有时是由于防火墙设置所致。 我的 Exchange URL 是“https://mail.{websitedomainname}.com/EWS/Exchange.asmx”,我收到消息“此 xml 文档中禁止 DTD”。 将 URL 更改为“https://xx.xx.x.xx/EWS/Exchange.asmx”,即使用公共 IP,解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.