ASP.NET ReportViewer работает в разработке, пуст при развертывании - PullRequest
3 голосов
/ 29 сентября 2010

У меня есть веб-приложение ASP.NET, которое использует ReportViewer для отображения локальных отчетов.Все прекрасно работает на моей машине для разработки (XP Pro, Visual Studio 2008).Когда я развертываю приложение на рабочем сервере (Windows Server 2008, IIS 7), сайт работает очень хорошо, за исключением средства просмотра отчетов.Когда я генерирую отчет, средство просмотра отчетов остается пустым.

Я написал код отладки, чтобы убедиться, что записи принимаются из базы данных, и они есть.Ошибка не возникает, но записи в программе просмотра отчетов не отображаются.Кроме того, изображения, которые обычно появляются в строке меню элемента управления ReportViewer (кнопка экспорта, кнопка печати, кнопки «вперед» и «назад» и т. Д.), Также не загружаются.

Я запустил ReportViewer.exe на сервере, чтобы установить соответствующие файлы, и убедился, что они находятся в GAC машины.

Может кто-нибудь предложить способ отладки этого ... было бы легче, если бы генерировалась ошибка (я не могу поверить, что я только что сказал это)?

1 Ответ

5 голосов
/ 29 сентября 2010

Пожалуйста, убедитесь, что у вас есть необходимые записи web.config.Я подозреваю, что вам не хватает записи в system.webServer / handlers, которая требуется в IIS7.IIS7 в значительной степени игнорирует раздел system.web / httpHandlers, который может объяснить, почему он работает в IIS 5.1 (XP), а не в 7.

Номера версий могут различаться, но это должно охватывать записи:

В разделе system.web / compilation:

  <buildProviders>
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </buildProviders>

В разделе system.web / httpHandlers

  <add path="Reserved.ReportViewerWebControl.axd"
       verb="*"
       type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
       validate="false" />

А в разделе system.webServer / handlers:

  <add name="ReportViewer"
       path="Reserved.ReportViewerWebControl.axd"
       verb="*"
       type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
       preCondition="integratedMode" />
...