ReportViewer 10.0.0.0 в DotNetNuke 4.8.X: исключение PageLoadException

У нас был элемент управления MS ReportViewer 9.0.0.0 для пользовательского модуля DotNetNuke в (устаревшей) версии 4.8.2. При попытке обновиться до 10.0.0.0 мы сталкиваемся со следующей ошибкой:

PageLoadException: страница не может быть нулевой. Убедитесь, что эта операция выполняется в контексте запроса ASP.NET.

Вот соответствующий код ASCX для основного элемента управления View в модуле DotNetNuke:

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, 
    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

<rsweb:ReportViewer ID="report" runat="server" ProcessingMode="Remote" />

Кроме того, есть некоторый код, который устанавливает IReportServerCredentials, я пропустил этот фрагмент кода, так как проблема возникает еще до того, как отчет будет обработан.

Трассировка стека довольно большая, но вот некоторые из важных битов:

DotNetNuke.Services.Exceptions.PageLoadException
System.InvalidOperationException: страница не может быть нулевой
в System.Web.UI.ScriptManager.get_IPage()
...
в Microsoft.Reporting.WebForms.ReportViewer .Render(программа записи HtmlTextWriter)
...
в DotNetNuke.Framework.PageBase.Render(программа записи HtmlTextWriter)

Мой гугл-фу мне совсем не помогает. Я пробовал возиться с ScriptManager в файле Default.aspx.vb DotnetNuke, экспериментировать со свойствами элемента управления ReportViewer и читать различные связанные статьи MSDN. Нет игральных костей.

Вопрос: как заставить ReportViewer 10.0.0.0 работать в DotNetNuke 4.8.x?


person Jeroen    schedule 12.06.2012    source источник


Ответы (1)


Это один из немногих вопросов, которые у меня были в последнее время, на который нельзя было ответить, выполнив поиск на SO. Еще немного повозившись, я решил проблему и решил дать новый Ответьте на свой вопрос. Итак, вот что решило проблему для меня.


Эту проблему можно решить, включив реализацию DotNetNuke AJAX для определенного элемента управления в вашем модуле, который содержит ReportViewer. Авторы находятся в этот старый пост с подробным описанием шагов для получения этого работающий. См. также 2007. Сообщение в блоге DotNetNuke об этой функции. Суть в следующем:

  1. Войти как хост DNN
  2. Перейдите к определению модуля для вашего модуля
  3. Отредактируйте настройки модуля
  4. Найдите элемент управления с помощью ReportViewer
  5. Нажмите, чтобы изменить настройки элемента управления
  6. Установите флажок Поддерживает частичный рендеринг.
  7. Сохраните настройки

Теперь элемент управления ReportViewer должен работать.

person Jeroen    schedule 12.06.2012