Добавление, удаление или редактирование разрешений пользователя в SSRS 2008 вызывает ошибку "" Ответ не является правильно сформированным XML
Я полностью озадачен действительно упрямой проблемой: когда я пытаюсь предпринять какое-либо действие (добавить, удалить, изменить) на вкладке "Безопасность" страницы свойств отчета в пользовательском интерфейсе SSRS 2008, я получаю общую ошибку. Все, что он говорит, это: Ответ не является правильно сформированным XML.
Копаясь в папке LogFiles в корне установки SSRS, я вижу это:
назначение роли недействительно. Назначение роли либо пустое, либо указывает имя пользователя или группы, которое уже используется в существующем назначении роли для текущего элемента, либо задает повторяющиеся роли для того же пользователя или группы. 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: неожиданный конец файла. Следующие элементы не закрыты: сообщение, деталь, мыло: ошибка, мыло: тело, мыло: конверт. Строка 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, читатель XmlReader)
в System.Xml.XmlDocument.ReadNode(читатель XmlReader)
в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadSoapException(XmlReader reader)
в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(сообщение SoapClientMessage, ответ WebResponse, Stream responseStream, логический asyncCall)
в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] параметры)
--- Конец внутренней трассировки стека исключений ---
в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] параметры)
в Microsoft.SqlServer.ReportingServices2005.ReportingService2005.SetPolicies(Элемент строки, Политики [] Политики)
в Microsoft.SqlServer.ReportingServices2005.RSConnection.SetPolicies(Элемент строки, Политики [] Политики)
в Microsoft.ReportingServices.UI.ImageTextButton.RaisePostBackEvent(String eventArgument)
в System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
в библиотеке System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)!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) в системе. Threading.Thread.AbortInternal () в System.Threading.Thread.Abort(Object stateInfo) в System.Web.HttpResponse.End() в Microsoft.ReportingServices.UI.ReportingPage.ShowErrorPage(String errMsg)
Базы данных (ReportServer и ReportServerTempDB) вышли чистыми, когда я запустил DBCC CHECKDB.
Эта ошибка не позволяет мне выполнить одно из следующих действий:
1. Используйте "Изменить элемент безопасности" для отчета или папки
2. Удалите имя пользователя со страницы безопасности домашней папки.
3. Добавьте нового пользователя с помощью "Назначения новых ролей"
Действительно странная вещь заключается в том, что некоторые из этих трех действий работают в некоторых папках отчетов. Я не вижу ничего общего между теми, кто работает, и теми, кто не работает.
Есть идеи??
2 ответа
ПРОБЛЕМА БЫЛА РЕШЕНА!
Основная причина: был пользователь, который каким-то образом был добавлен 3 раза в четыре разные роли в домашней папке. Любая подпапка, использующая те же права доступа, что и Home (наследование), имеет те же последствия. Почему SSRS должен разрешать это в первую очередь или не отмечать это явно в журнале ошибок - это не для меня!
Решение. Удалены дубликаты для пользователя (2 из 3 записей) в пользовательском интерфейсе SSRS.
Уроки выучены:
1. Прочитайте каждую ошибку несколько раз, НО не увлекайтесь самой вопиющей ошибкой
2. Попробуйте отделить симптомы от причин (в этом случае причиной было наличие дублированных идентификаторов, но в журналах ошибок вы увидите целую кучу языков, например "Произошел неожиданный конец файла", которые в стрессовых обстоятельствах могут легко ввести в заблуждение и отправить тебя в кроличью нору!
3. Примите любое предложение, которое вы получите с щепоткой соли, но проверьте его правильно
Если возможно, я бы:
- Экспорт отчетов из SRSS
- Удалить SRSS
- Удалить / переименовать базы данных SRSS (резервное копирование также будет хорошей идеей)
- Создать новый экземпляр SRSS
- Добавьте все отчеты еще раз (вручную, если можете) и попытайтесь настроить параметры.