XML 解析在第 1 行第 9 列失败:DTD 被禁止

Posted

技术标签:

【中文标题】XML 解析在第 1 行第 9 列失败:DTD 被禁止【英文标题】:XML parsing failed at line 1, column 9: DTD is prohibited 【发布时间】:2016-01-09 11:39:29 【问题描述】:

我已经为 SQL 分析服务器配置了 HTTP 访问,如下文所述, https://technet.microsoft.com/en-us/library/gg492140(v=sql.105).aspx

最后我已经为我的 SQL 分析服务配置了 msmdpump.dll,并且我试图在 Excel 中加载连接字符串,我得到了“XML 解析在第 1 行失败,第 9 列 DTD 被禁止”异常。

来自 'C:\inetpub\wwwroot\OLAP' 的 web.config 是,

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <identity impersonate="true" />
        <authentication mode="Forms" />
    </system.web>
    <system.webServer>
    <httpProtocol>
     <customHeaders>

        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Methods" value="GET, POST"/>
        <add name="Allow" value="OPTIONS, TRACE, GET, HEAD, POST, PUT"/>
        <add name="Access-Control-Allow-Headers" value="Origin, Content-Type, Accept"/>       
     </customHeaders>
   </httpProtocol>
        <handlers>
            <add name="OLAP" path="*.dll" verb="*" modules="IsapiModule" scriptProcessor="C:\inetpub\wwwroot\OLAP\msmdpump.dll" resourceType="File" preCondition="bitness64" />
        </handlers>
    </system.webServer>
</configuration>

安全身份的应用程序池是“NetworkService”。是否有任何管理员权限限制了连接或错过了任何设置?

【问题讨论】:

@levi,是的。通过证明当前用户的角色权限解决了此问题。 @Pranath 你能把答案和描述一起输入吗? 【参考方案1】:

通过以下操作解决了我的问题,

为此,请打开 SQL Management Studio 并连接到分析数据库。转到您的数据库并右键单击 Roles 文件夹。选择新角色,为其命名并设置您希望通过 XMLA HTTP 访问提供的访问级别。

【讨论】:

【参考方案2】:

我遇到了同样的问题,我做了两件事来解决它:

首先,我从“Web.Config”文件中删除了“accessPolicy”,使“handlers”为空,之前的文件文件包含以下代码:

<handlers accessPolicy="Read, Script">
    ...
</handlers>

我还(在问题之前)将运行 OLAP 的主网站的帐户更改为新的服务帐户。 OLAP 应用程序仍在单独的应用程序池上的单独系统帐户下运行。我将 OLAP 应用程序池更改为新的服务帐户。

访问 DLL 时仍然收到 500 内部错误(not correct):

https://.../olap/msmdpump.dll

但 excel 现在连接到我的多维数据集没有错误。

【讨论】:

【参考方案3】:

尽管上面给出了善意的建议,但错误的根本来源是来自 IIS 的“500 - 内部服务器错误”。这才是你需要关注的。

Excel 的解析器 (MSOLAP) 不期望服务器错误的第一行包含 Xhtml 1.0 Strict 文档类型:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
      <title>500 - Internal server error.</title>
    ...

【讨论】:

以上是关于XML 解析在第 1 行第 9 列失败:DTD 被禁止的主要内容,如果未能解决你的问题,请参考以下文章

使用 JsonReader.setLenient(true) 在第 1 行第 1 列路径 $ 接受格式错误的 JSON

应为 BEGIN_ARRAY,但在第 1 行第 1 列路径为 STRING

JasonReader.setLenient(true) 在第 1 行第 1 列路径 $ 错误处接受格式错误的 JSON

获得错误预期BEGIN_ARRAY但在第1行第2列路径$是BEGIN_OBJECT

在第 0 行第 0 列出现错误:转换错误

改造后请求错误 - java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在第 1 行第 1 列路径 $