2012-03-07 3 views
2

, когда я запускаю отчет с параметром в моем asp.net приложения я вижу загрузки дел до бесконечности без каких-либо признаков ошибки (поэтому я не знаю, как искать об этой проблеме в Google)SSRS ReportViewer загрузка до бесконечности без сообщения об ошибке

Примечание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

+0

Вы видите ошибки в javascript-консоли ? – jrummell

+0

@jrummell ** "Sys.WebForms.PageRequestManagerServerErrorException: при обработке запроса на сервере произошла неизвестная ошибка. Код состояния, возвращаемый с сервера: 0" ** * в функции с именем * * Sys $ WebForms $ PageRequestManager $ _endPostBack (ошибка, исполнитель, данные) * ** Догадка ** –

ответ

5

this article explains the issue in details

1-Браузер делает запрос GET на страницу ASPX, чтобы получить содержимое страницы и индикатор загрузки для отчета.

2-Браузер делает запрос POST на страницу ASPX, чтобы получить HTML-код для отчета (этот контент находится в UpdatePanel).

3-браузер делает GET запросы к обработчику HTTP, чтобы получить все изображения в отчете На шаге 2, запрос, чтобы получить отчет содержание запускает страницу ASP.Net, включая любой код, который вы поместили в в стр.

Почему это имеет значение? код был добавлен в событие загрузки страницы , что изменило состояние средства просмотра отчетов. Наиболее распространенный пример Я видел код пользователя, вызывающий SetParameters в событии загрузки, хотя существует несколько методов и свойств, которые будут запускать это. Изменение значений параметров сообщает ReportViewer, что ему необходимо выполнить обработку отчета о перезагрузке. Фактически, он сообщает зрителю, чтобы он возвращал к шагу 1 - поместил индикатор загрузки в браузер и перезапустил обработку отчета . Если вы делаете это во время каждой обратной передачи, зритель никогда не завершает этап 2. Он просто переходит в бесконечный цикл .

Методы вызова, такие как SetParameters, не являются дешевыми. Каждый вызов вызывает обратную связь на сервер отчетов. Так что это вызов, который вы хотите свести к минимуму в любом случае. Вызывая только SetParameters во время первоначального запроса GET или только когда значения параметров действительно изменились, вы можете улучшить производительность вашего приложения и разбить цикл. Простая проверка IsPostBack перед вызовом SetParameters обычно равна .

Смежные вопросы