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.