Report Viewer Web Control Version 10 дает ошибку, несмотря на правильную настройку

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

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

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

Я тестирую как хром, так и 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/обработчики раздел для информационных служб Интернета 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>

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

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

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

Тип: Microsoft.Reporting.WebForms.HttpHandler

Имя: зарезервировано-ReportViewerWebControl-axd

• Нажмите "ОК".

также изменен с помощью веб-конфигурации, добавив

  
         

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

Ответ 3

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