【发布时间】:2017-06-15 18:38:20
【问题描述】:
我正在处理一个 ASP.Net 页面,该页面使用 ReportViewer 控件显示来自远程 SSRS 服务器的报告。在我们部署不需要/接受任何参数的新报告之前,它一直没有问题。呈现这些报表时,报表的第一页会呈现良好,但当您切换到另一个页面(使用 ReportViewer 中的控件)时,您会收到一条错误消息,提示“一个或多个数据源缺少凭据”。
这就是 ReportViewer 的配置方式...
this.Report.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;
this.Report.ServerReport.ReportServerUrl = new Uri(App.Config.ReportServerPath);
this.Report.ServerReport.ReportPath = this.ReportPath;
this.SetRerportParameterValues(); // This does nothing since the report doesn't have any parameters
this.Report.AsyncRendering = false;
如果我将 AsyncRendering 更改为 true,则在呈现报告的第一页时会显示错误。
在呈现没有任何参数的报表时,我与参数有什么不同吗?
【问题讨论】:
-
很好奇,如果您只是从 SSRS 报告生成器运行报告,您是否也会收到错误消息?因此,您的代码并没有真正的问题,只是在开发报告时它使用 Windows auth 并且开发人员可以运行它,但是当您从应用程序运行它时,它没有获取过去访问数据源的凭据?
-
直接从报表服务器运行报表时运行良好。 Web 应用程序作为服务帐户运行,并且该服务帐户具有必要的权限。我也使用我的帐户(完全访问权限)运行它,但未成功。另外,如果是这种情况,为什么还要呈现第一页?该报告使用共享数据源,其他报告使用相同的数据源正常工作。这个问题似乎只发生在没有任何参数的报告中。我还没有尝试过,但我确定如果我在报告定义中添加了一个无用的参数,它会起作用。
-
报告在任何地方都运行良好,除非它尝试将其加载到我的自定义 asp.net 包装器页面中。即使那样,第一页也会很好地呈现。只有当我尝试切换到另一个页面时它才会失败。如果我使用其中一个下载链接下载报告,我将获得所有数据。
标签: c# asp.net reporting-services reportviewer