【问题标题】:DTD is prohibited in this XML document -- how to change permissions?此 XML 文档中禁止 DTD -- 如何更改权限?
【发布时间】:2011-02-13 21:34:04
【问题描述】:

我正在使用需要 XML 配置文件的第 3 方 .NET 组件。 我在 ASP.NET 应用程序中使用它。

使用以下 dtd 配置 XML 时出现错误:

<!DOCTYPE prod-config SYSTEM "cache-config.dtd">

错误如下:

出于安全原因,禁止使用 DTD 在这个 XML 文档中。启用 DTD 处理设置 ProhibitDtd XmlReaderSettings 上的属性为 false 并将设置传递给 XmlReader.Create 方法。

prod-config.dtd 与 XML 配置文件位于同一目录中。

我无权访问组件代码来修改 XmlReaderSettings、ProhibitDtd 等。 是否有其他方法可以修改或标记 XML 文件以允许访问 DTD?

(仅供参考,该组件是 Oracle Coherence .NET 客户端)

【问题讨论】:

    标签: c# .net xml dtd oracle-coherence


    【解决方案1】:

    FWIW,我遇到了同样的错误,我将行更改为:

    <!DOCTYPE prod-config "cache-config.dtd">
    

    并修复了错误。不知道为什么会这样,因此我可能会遇到更多错误。

    【讨论】:

    • 你知道吗,它又不行了! XML 和 Microsoft = 丑陋的组合。为什么我们甚至需要 DTD?什么是 DTD?
    【解决方案2】:

    您是否需要指定 DTD?如果没有实际使用它,那么完全省略 DTD 声明是最简单的。

    Ths page 在 Oracle 网站上表明该组件仅在 .NET 1.1 上受支持。我认为默认情况下拒绝 DTD 的行为在 .NET 1.1 和 .NET 2.0 之间发生了变化。如果您尝试使用 .NET 2.0 运行,我建议您尝试降级。并排安装 1.1可能可以工作,但您可能需要修改配置以强制其使用所需的运行时版本。

    【讨论】:

    • 这给出了错误:找不到元素“缓存配置”的架构信息。
    • 我认为这种行为在 .NET 1.1 和 .NET 2 之间发生了变化。难道这个组件仅在 .NET 1.1 中受支持?
    猜你喜欢
    • 1970-01-01
    • 2011-03-22
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    相关资源
    最近更新 更多