报告查看器错误:请求失败,HTTP状态为401:未经授权

时间:2010-09-09 18:04:52

标签: asp.net security reportviewer report

我有一个asp.net c#web应用程序,其中包含远程处理模式的报告。我正在使用report-viewer控件来呈现报告。当我在调试模式下运行应用程序时,我能够查看我的报告,但是当我将应用程序发布到其他服务器时,我收到此错误消息:

请求失败,HTTP状态为401:未经授权。

我的报表服务器位于与我发布的Web应用程序位置不同的服务器上。我已将新的角色分配添加到我的报表服务器,并且还添加到了我的web.config,但错误仍然存​​在。我想我在我的aspx页面中遗漏了一些报告查看器。

任何意见都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

我假设您已经在代码隐藏中设置了服务器,例如

reportviewer.ServerReport.ReportServerUrl = "http://{server_ip}/reportserver";

或通过报告查看器控件的属性。确保将{server_ip}更改为报表服务器的实际值。

我过去看到的其他问题与个人报告的访问有关。由于这是跨服务器,因此您需要使用代理用户集来查看报告。

以下是来自MSDN的2个示例:

Example 1

Example 2

答案 1 :(得分:0)

是的!使用Page_Load&以这种方式Page_Init

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    ReportViewer1.Visible = True
    Dim strReportsFolder As String = ConfigurationManager.AppSettings("ReportsFolder")
    Dim reportName As String = "report1"
    ReportViewer1.ServerReport.ReportPath = strReportsFolder + reportName

End Sub

Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As EventArgs)

    PopulateReport(ReportViewer1, "")

End Sub

Public Shared Sub PopulateReport(ByVal rptViewer As ReportViewer, ByVal reportName As String)

    Dim strReportServer As String = ConfigurationManager.AppSettings("ReportServer")
    Dim strUserName As String = ConfigurationManager.AppSettings("Username")
    Dim strPassword As String = ConfigurationManager.AppSettings("Password")
    Dim strDomain As String = ConfigurationManager.AppSettings("Domain")

    rptViewer.ServerReport.ReportServerUrl = New Uri(strReportServer)
    rptViewer.ServerReport.ReportServerCredentials = New ReportViewerCredentials(strUserName, strPassword)

End Sub