在没有错误消息的情况下,ssrs reportviewer加载到无穷大

时间:2012-03-07 17:13:07

标签: asp.net sql-server reportviewer reporting-services

当我在我的asp.net应用程序中运行带有参数的报告时,我看到将div加载到无穷大 没有任何错误迹象(所以我不知道如何在谷歌搜索这个问题)

注1: 我可以直接从报表服务器

运行相同的报表

注2: 如果我删除了参数,它从asp.net页面和报表服务器

正常运行
 protected void Page_Load(object sender, EventArgs e)
        {
            oID = (Int64)Session["OID"];
            ViewReport();
        }


    public void ViewReport()
    {
        string reportServerUrl = ConfigurationManager.AppSettings.Get("ReportServerPath");
        ReportViewer.ServerReport.ReportServerUrl = new System.Uri(reportServerUrl);
        ReportViewer.ServerReport.ReportPath = @"/StoReports/MyReport";

        ReportViewer.ServerReport.SetParameters(new ReportParameter("OID", oID.ToString()));
        ReportViewer.ServerReport.Refresh();
    }

在一个名为Sys $ WebForms $ PageRequestManager $ _endPostBack(错误,执行器,数据)的函数中

工具 sql server Denali,visual studio 2010

1 个答案:

答案 0 :(得分:7)

this article explains the issue in details

  
    

1-Browser向ASPX页面发出GET请求以获取页面内容     和报告的加载指标。

         

2-Browser发出POST请求     到ASPX页面获取报告的HTML(此内容位于     UpdatePanel中)。

         

3-Browser向HTTP处理程序发出GET请求     报告中的所有图像在步骤2中获取报告的请求     content运行ASP.Net页面,包括您放入的任何代码     页面。

         

为什么这很重要?代码已添加到页面的load事件中     这改变了报告查看器的状态。最常见的例子     我见过的是在load事件中调用SetParameters的用户代码     有几种方法和属性会触发这个。     更改参数值会告诉ReportViewer它需要它     重启报告处理。实际上,它告诉观众返回     到第1步 - 将加载指示器放入浏览器并重新启动     报告处理。如果您在每次回发期间执行此操作,则查看器     永远不会成功完成第2步。它只是进入无限     循环。

         

调用SetParameters等方法并不便宜。每次通话都触发一次     往返于报表服务器。所以这是你想要最小化的电话     无论如何。通过在初始GET请求期间仅调用SetParameters     或者只有在参数值实际发生变化时,才能改进     应用程序的性能和打破循环。一个简单的     通常在调用SetParameters之前检查IsPostBack     足够的。