报表查看器无法访问其他数据库服务器中的报表

Posted

技术标签:

【中文标题】报表查看器无法访问其他数据库服务器中的报表【英文标题】:Report viewer can't access reports in other database server 【发布时间】:2012-04-06 08:23:38 【问题描述】:

我在应用程序服务器中发布了一个在 asp.net 3.5 中的 Web 应用程序。我在需要从 Web 应用程序访问的数据库服务器中部署了一些 s-s-rS 报告。两个服务器都在同一个网络中。我正在使用报告查看器控件以显示报告,我正在动态传递报告路径。我还从后面的代码发送登录凭据。

问题是报告被正确识别并且正确的报告参数也被显示。但是当我点击查看报告按钮时没有数据出现。我有 Sql server 2008 r2 和报告查看器版本 9.0

请帮我解决这个问题。这是一个代码sn-p...

protected void Page_Load(object sender, EventArgs e)

    if (!IsPostBack)
    
        ReportViewer1.ShowCredentialPrompts = false;

        IReportServerCredentials irsc = 
            new CustomReportCredentials("user", "pass", "domain");

        ReportViewer1.ServerReport.ReportServerCredentials = irsc;
        ReportViewer1.ServerReport.ReportServerUrl = 
            new Uri("http://72.0.170.205:80/ReportServer");

        ReportViewer1.ShowParameterPrompts = true;
        ReportViewer1.ShowPrintButton = true;
        ReportViewer1.ProcessingMode = ProcessingMode.Remote;

        ReportViewer1.ServerReport.Refresh();

        ReportViewer1.ServerReport.ReportPath = Request.QueryString["val"];
    

【问题讨论】:

我认为这里存在一些兼容性问题。在我的开发环境中,我使用了 s-s-rs 2008。在生产环境中使用了 s-s-rs 2008 r2。任何人都可以帮助我获取最新版本的asp.net 报表查看器控件中的报表查看器。 【参考方案1】:

您是否检查过报告在 http://72.0.170.205:80/Reports 上使用相同的凭据运行是否正常?

不知道这是否有任何帮助,但这是我在实施中看到的差异:

我不调用 ReportViewer1.ServerReport.Refresh(); 我称之为.RegisterRequiresViewStateEncryption(); (有时不得不禁用它)

我的 reportDisplay 应用程序不是根应用程序。由于冲突,早在 s-s-rS2005 中,我不得不在 web.config 中为其会话 cookie 使用不同的名称。从那以后一直保持着它

 <sessionState cookieless="UseCookies" cookieName="ASP.NET_SessionId.myCustomName"/>

【讨论】:

我已检查报告是否使用相同的凭据完美运行。您能告诉我有关在何处创建此会话 cookie 的一些详细信息吗??cookie 的默认名称是什么?跨度> cookie 名称在 web.config 的 sessionState 元素中定义。默认名称应为 ASP.NET_SessionId 。 感谢您的帖子,我将会话和 httphandler 添加到应用程序配置中,并且它有效....:)【参考方案2】:

受保护的子 Load_Report() Dim Connection As New SqlConnection(Connection_String) '服务器连接字符串

    Dim Data_Table As New DataTable("DataTable1") *'Create New Data Table in DataSet having same columns as are there in your Datatable*
    Dim Query As String
    Query = "SELECT Caption,Mobile,Age,City FROM Bond.Book"
    Dim Command As New SqlCommand(Query, Connection)
    Dim Table_Adapter As New SqlDataAdapter(Command)
    Table_Adapter.Fill(Data_Table)
    ReportViewer1.ProcessingMode = ProcessingMode.Local
    ReportViewer1.LocalReport.ReportPath = Server.MapPath("Book.rdlc")
    ReportViewer1.LocalReport.DataSources.Clear()
    ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("Book_DataSet", Data_Table))
    ReportViewer1.LocalReport.Refresh()
End Sub

这对我有用。我能够在服务器上加载报表查看器并查看服务器数据

【讨论】:

以上是关于报表查看器无法访问其他数据库服务器中的报表的主要内容,如果未能解决你的问题,请参考以下文章

Report Server Configuration Manager报表服务器配置管理器,连接新数据库-》报错:无法连接到服务器。

POWER BI 支持一个报表连接多数据集

润乾报表基础知识

水晶报表查看器中未显示图像

[转]SQL Server 2008 如何配置报表管理器

除非禁用 UAC,否则尝试访问报表管理器 URL 时出现权限错误