0

我有一个有效且经过验证的加载项/清单,它通过了npm run validate. 我和数百名用户都可以通过链接下载我的清单。然而,一些用户一直面临这个错误:

无法安装此应用。清单 XML 文件无效。出于安全原因,此 XML 文档中禁止使用 DTD。要启用 DTD 处理,请将 XmlReaderSettings 上的 DtdProcessing 属性设置为 Parse 并将设置传递给 XmlReaderCreate 方法。

在此处输入图像描述

某些用户在什么情况下会出现这样的错误?

4

2 回答 2

1

我实际上在一年前就遇到了这个问题。就像@OutlookAdd-insTeam-MSFT 建议的那样,我也相信这与网络有关,特别是与 DNS 有关。

这是我能找到的,但不幸的是,我的客户再也没有回来确认它是否有用。

(请注意,部分文字引自底部列出的网站。)

错误信息

无法安装应用程序。清单 XML 无效。出于安全原因,此 XML 文档中禁止使用 DTD。要启用 DTD 处理,请将 XmlReaderSettings 上的 DtdProcessing 属性设置为 Parse 并将设置传递给 XmlReader.Create 方法。

为什么会发生这种情况?

当 O365 读取 manifest.xml 时,它正在通过 msoid.[organization_name].onmicrosoft.com 和 msoid.onmicrosoft.com 解析。如果失败(由于输入错误等),则会调用 HTTP 404 错误。此时,您的 ISP 的 DNS 服务器应该接管并提供根据其 CNAME 记录表解析地址。但是,某些组织可能会提供额外的 DNS 帮助。一旦 msoid 解析器服务检测到 404 错误,ISP 的 DNS 将尝试接管 DNS 解析(DNS 协助)。如果失败(由于缺少 CNAME 记录或拼写错误),它会将 HTML 格式的查询结果返回给 O365。它基本上是 HTTP 200 响应,O365 将其解释为成功的身份验证。在此 O365 开始处理 HTML 格式的响应之后,就好像它是原始 manifest.xml 一样。

可能的解决方案:

a) 确保客户端计算机上的 DNS 设置正确。

b) 临时切换到另一个 DNS 服务器(例如 Google DNS)

d) 关闭 DNS 协助服务(如适用)

请参阅以下文章了解更多信息:

https://www.codetwo.com/kb/dtd-prohibited/

https://www.veeam.com/kb2821

http://sharepointers.blogspot.com/2017/03/connect-pnponline-for-security-reasons.html

https://docs.microsoft.com/fi-fi/office365/admin/services-in-china/ purpose-of-cname?redirectSourcePath=%252fen-us%252farticle%252fWhat-s-the- purpose-of-the -Office-365-CNAME-record-for-msoid-19b67e2b-1b28-4432-8cca-394803fbdc87&view=o365-21vianet

https://blogs.msdn.microsoft.com/joerg_sinemus/2017/07/10/sharepoint-online-vanity-domain-powershell-csom-and-the-msoid-cname-record/

于 2020-07-31T11:59:38.867 回答
0

您可以根据 XML 架构定义 (XSD) 文件验证清单文件。这将确保清单文件遵循正确的架构,包括您正在使用的元素的任何命名空间。如果您从其他示例清单复制元素,请仔细检查您是否还包括适当的命名空间。您可以使用 XML 模式验证工具来执行此验证。

要使用命令行 XML 模式验证工具来验证您的清单,您需要:

  1. 安装tarlibxml,如果你还没有的话。
  2. 运行以下命令。将 XSD_FILE 替换为清单 XSD 文件的路径,并将 XML_FILE 替换为清单 XML 文件的路径。
xmllint --noout --schema XSD_FILE XML_FILE

此外,您可以尝试使用该npm run validate命令验证您的清单。有关详细信息,请参阅验证 Office 加载项的清单

于 2020-07-16T14:10:10.760 回答