我有一个asp.net c#web应用程序,其中包含远程处理模式的报告。我正在使用report-viewer控件来呈现报告。当我在调试模式下运行应用程序时,我能够查看我的报告,但是当我将应用程序发布到其他服务器时,我收到此错误消息:
请求失败,HTTP状态为401:未经授权。
我的报表服务器位于与我发布的Web应用程序位置不同的服务器上。我已将新的角色分配添加到我的报表服务器,并且还添加到了我的web.config,但错误仍然存在。我想我在我的aspx页面中遗漏了一些报告查看器。
任何意见都会受到赞赏。
答案 0 :(得分:2)
我假设您已经在代码隐藏中设置了服务器,例如
reportviewer.ServerReport.ReportServerUrl = "http://{server_ip}/reportserver";
或通过报告查看器控件的属性。确保将{server_ip}更改为报表服务器的实际值。
我过去看到的其他问题与个人报告的访问有关。由于这是跨服务器,因此您需要使用代理用户集来查看报告。
以下是来自MSDN的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