在ASP.Net ReportViewer中使用SSRS

时间:2010-01-14 22:19:04

标签: asp.net authentication reporting-services reportviewer ssrs-2008

我在我的localhost上设置了SSRS,并使用BIDS创建了几个关于它们的报告。他们从部署SSRS的同一SQL Server访问数据,当我预览它们时,它们运行正常。然后我将它们部署到我的localhost SSRS并通过ReportManager Web界面访问它们,再次运行得很好。最后,我将它们部署到我的托管服务提供商的SSRS。同样的交易;良好的数据连接性,在ReportManager中看起来很棒。

我第一次通过任一系统上的ReportManager访问它们时,它需要我的用户名和密码,这在我的笔记本电脑上只是我的帐户登录和密码。对于我的托管服务提供商,这是我的帐户登录。

我的问题是当我尝试使用ASP.Net中的ReportViewer控件显示报表时。很多时候,当它试图渲染时,我得到一个“Bad Logon”或“401:Unauthorized”而不是我的报告。经过大量的阅读和思考,我认为问题是我需要登录不是SQL Server,而是登录我的报告所在的网站(Web服务?)。现在,如果我根本不提供任何凭据,我可以在ReportViewer(通常)中获取我的本地报告。但是,当我将报告部署到远程服务器时,这不再起作用了。

经过一些研究后,我创建了一个实现IReportServerCredentials的类,并尝试使用它来传递用户名和密码,但这似乎不起作用。令我感到困惑的是,这些凭据是应该用于数据源还是用于Web服务。

如果有人能够了解如何让ReportViewer登录SSRS网络服务,我会非常感激。

2 个答案:

答案 0 :(得分:4)

假设您在查看器上设置了ProcessingMode =“Remote”attirbute,那么您可能遇到身份验证问题。在远程模式下使用报表查看器时,报表由ASP.Net运行的帐户在SSRS上执行。此帐户必须能够访问报告服务器和要运行的报告。可能发生的事情是ASP.Net在一个无法访问SSRS的帐户下运行。

如果您希望能够为报告查看器设置凭据,请查看this thread以获取解决方案和示例代码。

答案 1 :(得分:1)

远程调试身份验证问题始终具有挑战性,但您可以通过在AppPool上启用模拟来解决问题。这样,当用户登录时,IIS就能够以您的用户身份连接到SQL Server。

另一种方法可能是使用SQL身份验证;不幸的是,细节取决于你如何把事情搞定。