5

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

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

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

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

如果有人可以告诉我如何让ReportViewer登录到SSRS Web服务,我非常感谢。

回答

4

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

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

+0

事实上,当我部署到另一个临时位置时,我收到了一个错误,表示我使用的NT帐户没有执行该操作的权限。了解模拟和我的应用程序运行的帐户是我需要关注的更多内容。在今天的最后,我能够通过添加“浏览器”的“BUILTIN \ Users”角色来运行这个东西。它有效,但我并不疯狂,因为我认为它基本上意味着报告现在不会被锁定。我将继续追求我在这里得到的答案。 – 2010-01-15 04:56:31

+0

最后,我最终通过检查我更仔细地构建的凭证类,并将其与我知道工作的示例代码进行比较,从而发现了它。事实证明,我从我的GetFormsCredentials()方法返回“True”。因为我从来没有打算使用表单身份验证,所以我应该返回“False”。“所有”out“param对该方法都设置为NULL,因此认证从未正确完成,并且我没有意识到它。 – 2010-01-18 01:21:52

+0

太棒了。当我们尝试将SSRS与我们的集成时遇到了相同的问题最终我们能够获得正确的权限,但这很痛苦。 – jvilalta 2010-01-18 01:50:21

1

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

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

+0

我绝对会更喜欢使用SQL身份验证;主要是因为我从来没有理解Windows身份验证如何执行它的功能。而且,因为在网络应用上没有涉及网络登录。我将阅读模仿。 – 2010-01-15 05:02:12

相关问题