我正在尝试解决报告查看器控件显示消息的问题:
请求失败,HTTP 状态为 401:未授权。
而不是报告。此消息显示在将显示报告的位置。页面的 Share Point 部分正常显示。
这发生在 SharePoint 2013 页面上的报表查看器控件中。
其他页面上的其他一些报告显示得很好。在报表服务器中,这些报表的浏览权限是相同的。
具有相同配置的测试环境工作正常。我在 Web 服务器上的 web.config 和报表服务器上的 RSReportServer.config 文件中找不到任何差异。
我使用浏览器中的 http 流量,使用 IE 开发人员工具中的“网络”选项卡,看到了一些了不起的东西。从 javascript 到报表服务器控件的 POST 请求如下:
/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 操作成功完成。
看起来很矛盾。
有人对解决此问题的后续步骤有建议吗?