在 SSRS 2008 中添加、删除或编辑用户权限时会引发错误“”响应不是格式正确的 XML

在 SSRS 2008 中添加、删除或编辑用户权限时会引发错误“”响应不是格式正确的 XML

我完全被一个非常棘手的问题难住了:当我尝试在 SSRS 2008 UI 上的报告属性页的“安全”选项卡中执行任何操作(添加、删除、编辑)时,我收到一个一般错误。它只说了这些:响应不是格式良好的 XML。

在 SSRS 安装根目录下的 LogFiles 文件夹中,我看到了以下内容:

角色分配无效。角色分配要么为空,要么指定了当前项目的现有角色分配中已使用的用户或组名称,要么为同一用户或组指定了重复的角色。ui!ReportManager_0-1!32c!07/23/2011-15:03:33:: e 错误:响应不是格式良好的 XML。ui!ReportManager_0-1!32c!07/23/2011-15:03:33:: e 错误:HTTP 状态代码 --> 500 -------详细信息-------- System.InvalidOperationException:响应不是格式良好的 XML。---> System.Xml.XmlException:发生意外的文件结束。以下元素未关闭:消息、详细信息、soap:Fault、soap:Body、soap:Envelope。第 3 行,位置 5470。

在 System.Xml.XmlTextReaderImpl.Throw(异常 e)

在 System.Xml.XmlTextReaderImpl.ThrowUnclosedElements()

在 System.Xml.XmlTextReaderImpl.ParseElementContent()

在 System.Xml.XmlLoader.LoadNode(布尔 skipOverWhitespace)

在 System.Xml.XmlLoader.ReadCurrentNode(XmlDocument doc,XmlReader 阅读器)

在 System.Xml.XmlDocument.ReadNode (XmlReader 阅读器)

在 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadSoapException(XmlReader 阅读器)

在 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage 消息、WebResponse 响应、Stream responseStream、Boolean asyncCall)

在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (字符串方法名称,对象 [] 参数)

--- 内部异常堆栈跟踪结束 ---

在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (字符串方法名称,对象 [] 参数)

在 Microsoft.SqlServer.ReportingServices2005.ReportingService2005.SetPolicies(字符串项,策略 [] 策略)

在 Microsoft.SqlServer.ReportingServices2005.RSConnection.SetPolicies(字符串项,策略 [] 策略)

在 Microsoft.ReportingServices.UI.ImageTextButton.RaisePostBackEvent (字符串事件参数)

在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)

在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) library!ReportServer_0-2!a14!07/23/2011-15:03:33:: 调用 GetSystemPropertiesAction()。ui!ReportManager_0-1!32c!07/23/2011-15:03:33:: e 错误:ShowErrorPage 中出现异常:System.Threading.ThreadAbortException:线程正在中止。在 System.Threading.Thread.AbortInternal() 在 System.Threading.Thread.Abort(Object stateInfo) 在 System.Web.HttpResponse.End() 在 Microsoft.ReportingServices.UI.ReportingPage.ShowErrorPage(String errMsg) 在 System.Threading.Thread.AbortInternal() 在 System.Threading.Thread.Abort(Object stateInfo) 在 System.Web.HttpResponse.End() 在 Microsoft.ReportingServices.UI.ReportingPage.ShowErrorPage(String errMsg)

当我运行 DBCC CHECKDB 时,数据库(ReportServer 和 ReportServerTempDB)没有任何问题。

此错误阻止我执行以下任何操作:
1. 对报告或文件夹使用“编辑项目安全性”
2. 从主文件夹安全性页面中删除用户名
3. 使用“新角色分配”添加新用户

真正奇怪的是,这 3 个操作中的一些在某些报告文件夹中有效。我看不出那些有效的和那些无效的之间有什么共同之处。

有任何想法吗??

答案1

此问题已得到解决!

根本原因:有一位用户不知何故被三次添加到 Home 文件夹下的四个不同角色中。任何使用与 Home(继承)相同权限的子文件夹都会遭受同样的后果。为什么 SSRS 首先要允许这种情况或者不在错误日志中明确标记它,这让我无法理解!

解决:删除了 SSRS UI 上用户的重复项(3 个条目中的 2 个)。

得到教训:
1. 阅读每个错误几次,但不要被最明显的错误冲昏头脑
2. 尝试将症状与原因分开(在这种情况下,重复 ID 的存在是原因,但在错误日志中,你会看到一大堆语言,如“发生了意外的文件结束”,在紧张的情况下,这很容易误导你,让你陷入困境!
3. 对你得到的任何建议持保留态度,但要仔细审查

答案2

如果可能的话,我会:

  1. 从 SRSS 导出报告
  2. 卸载 SRSS
  3. 删除/重命名 SRSS 数据库(备份也是个好主意)
  4. 创建一个新的 SRSS 实例
  5. 再次添加所有报告(如果可以,请手动添加)并尝试配置首选项。

相关内容