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
改造后请求错误 - java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在第 1 行第 1 列路径 $