Версия 10 веб-элемента управления Report Viewer выдает ошибку, несмотря на правильную настройку - PullRequest
11 голосов
/ 21 ноября 2011

Отчеты развернуты и работают, проверено в диспетчере отчетов.

Мое приложение представляет собой приложение MVC2 с моим отчетом на собственной странице aspx. Эта страница работала с версией 8 элемента управления средства просмотра отчетов, но мы перешли на новые серверы, обновили сервер SQL и пытаемся обновить наш веб-сайт, чтобы соответствовать.

Серверы - Windows Server 2008 с IIS 7.5.

Я тестирую как в Chrome, так и в IE 9.

Несмотря на все мои усилия, я все еще получаю эту ошибку:

Ошибка конфигурации средства просмотра отчетов

Обработчик HTTP веб-элемента управления Report Viewer не зарегистрирован в файл web.config приложения. Добавьте <add verb="*" path="Reserved.ReportViewerWebControl.axd" type = "Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> в system.web / httpHandlers раздел файла web.config или добавьте <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> в system.webServer / handlers раздел для информационных служб Интернета 7 или более поздней версии.

Но я уже сделал это. на самом деле, я даже читал это из MSDN :

Чтобы использовать IIS 7.0 в интегрированном режиме, необходимо удалить обработчик HTTP в system.web / httpHandlers. В противном случае IIS не будет запускать приложение, а вместо этого отобразит сообщение об ошибке.

Просто чтобы быть в безопасности, я попробовал комбинировать ни то, ни другое, добавляя обработчик в IIS напрямую, только обработчик http веб-сервера в моей конфигурации, просто обработчик http в моей конфигурации и оба.

Давайте начнем с моего web.config

<configuration
  <system.web>
    <httpRuntime maxQueryStringLength="4096" />
    <compilation targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
      </assemblies>
        <buildProviders>
            <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </buildProviders>
    </compilation>
  </system.web>
  <system.webServer>
    <handlers>
        <add name="ReportViewerWebControlHandler"  preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler,  Microsoft.ReportViewer.WebForms, Version=10.0.0.0,  Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"  />
    </handlers>
  </system.webServer>
</configuration>

У меня есть сборки, поставщик сборки и обработчик. Что еще может быть не так?

Ответы [ 3 ]

6 голосов
/ 08 марта 2012

Я нашел быстрый и грязный обходной путь - к вашей веб-конфигурации добавьте:

<location path="Reserved.ReportViewerWebControl.axd">
<system.web>
  <authorization>
    <allow users="*" />
  </authorization>
</system.web>

Я увидел в fiddler, что по какой-то причине, когда страница запрашивала Reserved.ReportViewerWebControl.axd вместополучения HTTP 200 сервер ответа отправит 302 - перемещен в login.aspx? returnurl = "Reserved.ReportViewerWebControl.axd. Таким образом, разрешение всем пользователям пути обработчика решает проблему.

1 голос
/ 23 января 2013

Я думал, что проблема с отображением ReportViewer на IIS7 Я вручную сопоставил свой дескриптор средства просмотра отчетов с IIS7 следующим образом:

• Откройте диспетчер служб IIS и выберите веб-приложение.

• В области IIS дважды щелкните значок сопоставления обработчиков.

• В правой части панели действий нажмите «Добавить управляемый обработчик».

• В диалоговом окне Добавить управляемый обработчик введите следующее:

Путь запроса: Reserved.ReportViewerWebControl.axd

Тип: Microsoft.Reporting.WebForms.HttpHandler

Имя: Reserved-ReportViewerWebControl-axd

• Нажмите ОК.

также изменяется через веб-конфигурацию путем добавления


Все еще мой не работает. Я думал, что вышеупомянутое решение поможет другим.

0 голосов
/ 23 января 2013

Я пытаюсь это, удалив ненужные сборки MVC из проекта asp.net. Таким образом, простое решение состояло в том, чтобы удалить WebMatrix. *. Dll из папки Bin в веб-проекте, так как она принадлежит mvc framework.

...