Элемент управления ReportViewer в веб-части в SharePoint отображает 401 для некоторых отчетов
Я пытаюсь решить проблему с элементом управления Report Viewer, отображающим сообщение:
Сбой запроса с состоянием HTTP 401: неавторизован.
а не отчет. Это сообщение отображается в том месте, где будет отображаться отчет. Части Share Point на странице отображаются нормально.
Это происходит в элементе управления Report Viewer на странице SharePoint 2013.
Некоторые другие отчеты на других страницах отображаются просто отлично. На сервере отчетов разрешения на просмотр этих отчетов одинаковы.
Среда тестирования с такой же конфигурацией работает правильно. Я не смог найти никаких различий в файле web.config на веб-сервере и в файле RSReportServer.config на сервере отчетов.
Я зашла по трафику из своего браузера, используя вкладку "Сеть" в инструментах разработчика IE, и увидела нечто замечательное POST-запросы от javascript к элементу управления сервера отчетов выглядят так:
/Reserved.ReportViewerWebControl.axd?OpType=SessionKeepAlive&ControlID=597f9e1be96e4291b847ce06da66940d
и получить статус HTTP 500, тогда как тело ответа составляет всего два байта:
Хорошо
Отчет, который работает правильно, выдает похожие запросы, но только получает статус HTTP 200, также с OK в качестве тела ответа.
В моей тестовой среде, опять же, все по-другому. Отчет отправляет три запроса на ReportViewerWebControl.axd. Первые получают статус HTTP 401. Следующий запрос добавляет заголовок аутентификации с токеном NTLM. Это также получает статус 401. Третий добавляет еще одно значение NTLM и получает статус 200.
Это похоже на некоторый механизм вызова, и я нашел статью MSDN Ошибка: запрос не выполнен с состоянием HTTP 401: не авторизован при открытии отчета в Microsoft Dynamics CRM 4.0 и проверен с добавлением в мой файл RSReportServer.config. Это не помогло, и этот ключ также отсутствует в моей тестовой среде.
Я также включил ведение журнала FailedRequest, чтобы лучше понять внутреннюю ошибку сервера, возвращаемую по запросам в ReportViewerWebControl.axd. Это ведение журнала очень сложное, но я не смог найти ничего, указывающего на причину этой ошибки.
Под резюме запроса это читает
188. view trace
Warning -MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName ManagedPipelineHandler
Notification EXECUTE_REQUEST_HANDLER
HttpStatus 500
HttpReason Internal Server Error
HttpSubStatus 0
ErrorCode The operation completed successfully. (0x0)
ConfigExceptionInfo
и под аутентификацией и авторизацией
No. Event
60. view trace -AUTH_START AuthTypeSupported MapCliCert
61. view trace -AUTH_END
64. view trace -AUTH_START AuthTypeSupported Basic
65. view trace -AUTH_END
68. view trace -AUTH_START AuthTypeSupported NT
70. view trace -AUTH_END
91. view trace -FILTER_AUTH_COMPLETE_START
92. view trace -FILTER_AUTH_COMPLETE_END
Я не понимаю, что все это значит, но это
ErrorCode Операция успешно завершена.
выглядит как противоречие.
У кого-нибудь есть предложения по дальнейшим действиям для решения этой проблемы?