none
Перенос приложения из IIS 5.1 в IIS 7.5 RRS feed

  • Вопрос

  • Здравствуйте!

    У меня нормально работал сайт под Windows XP Pro (IIS 5.1). При переносе на Windows 7 Ultimate (IIS 7.5) система дает ошибку

    The WebResource.axd handler must be registered in the configuration
    to process this request.
    
    <!-- Web.Config Configuration File -->
    
    <configuration>
        <system.web>
            <httpHandlers>
                <add path="WebResource.axd" verb="GET"
    type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />
            </httpHandlers>
        </system.web>
    </configuration>"

    Я делаю, как рекомендовано - никаких изменений. Я вставляю эту команду в другую секцию

    <system.webServer>
           <handlers>
            <add name="WebResource" path="WebResource.axd" verb="GET,HEAD,POST,DEBUG" preCondition="integratedMode" type="System.Web.Handlers.AssemblyResourceLoader" />
        </handlers>
            <defaultDocument>
                <files>
                    <clear />
                    <add value="default.aspx" />
                    <add value="Default.htm" />
                    <add value="Default.asp" />
                    <add value="index.htm" />
                    <add value="index.html" />
                    <add value="iisstart.htm" />
                </files>
            </defaultDocument>
      </system.webServer>
    (система, правда, ругается, что нет обязательного тэга name, пришлось его вставить).

    Сайт стал открываться, но как-то странно:

    1. Не находит пути к файлам (в том числе и стилей, поэтому все страницы без стилей и выглядят ужасно!, не находит файлов ресурсов, и поэтому те LinkButton, где есть картинки, вообще не показываются)

    2.Не запускаются файлы .htm, говорит

    HTTP Error 404.4 - Not Found

    The resource you are looking for does not have a handler associated with it.

    (Я так понимаю, что не находится обработчик файлов .htm)

    И еще много не так, как на старом сайте под управлением IIS 5.1

    При этом, если я использую встроенный VS Development Server - то все нормально.

    Вопрос - что надо написать в Web.config, чтобы миграция с IIS 5.1 на IIS 7.5 прошла нормально?

    Спасибо

    Александр



    • Изменено YatajgaModerator 26 января 2014 г. 9:26 Правка заглавия
    26 января 2014 г. 8:34

Ответы

  • Первое, что я сделал - это запустил команду aspnet_regiis -i, но это не помогло. Видимо, какой-то косяк при установке IIS 7.5 на Windows 7, потому что при установке приложения на Windows Server 2008 (и на 32, и на 64-разрядные версии, там где IIS 7.0 встроен изначально) - все работает нормально, даже не перестраивая Web.config !


    • Предложено в качестве ответа YatajgaModerator 31 января 2014 г. 19:48
    • Помечено в качестве ответа YatajgaModerator 6 февраля 2014 г. 6:08
    28 января 2014 г. 18:42
  • Ну тогда, скорее всего проблема с установкой IIS и регистрацией обработчиков.

    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа YatajgaModerator 31 января 2014 г. 19:49
    • Помечено в качестве ответа YatajgaModerator 6 февраля 2014 г. 6:08
    28 января 2014 г. 19:21
    Модератор

Все ответы

  • Дело в том, что конвейер обработки запросов в IIS 5.1 и IIS 7.x совершенно разный, отсюда и все проблемы. Секцию <httpHandlers> надо убрать совсем. Чётких инстукций на этот счёт нет. Самое главное надо убрать все те настройки из файла web.config которые относятся к старой версии IIS.

    "Не находит пути к файлам (в том числе и стилей, поэтому все страницы без стилей и выглядят ужасно!, не находит файлов ресурсов, и поэтому те LinkButton, где есть картинки, вообще не показываются)" - возможно по умолчанию подключается система маршрутизации, оттуда и все беды. Тем более, что вы её не использовали раньше. Отключите модуль маршрутизации, если он подключён.

    <system.webServer>     
      <modules>     
        <remove name="UrlRoutingModule-4.0" />         
      </modules>     
    </system.webServer>
    Тогда запросы не будут перехватываться системой маршрутизации, а статические файлы будут передаваться нормально.


    Сделаем содержимое сообщества лучше, вместе!

    26 января 2014 г. 9:25
    Модератор

  • Спасибо за совет. Но он не сработал. Сработало  (частично), когда я добавил в секцию  <system.webServer> явно  handler

     <handlers> 
      <add    name="StaticFile"
                    path="*" verb="*"
                    modules="StaticFileModule,DefaultDocumentModule"
                    resourceType="Either"
                    requireAccess="Read" />
     </handlers>
    

    Стили и ресурсы, а также файлы .htm стали находиться. Но отчеты (.rdlc) не грузятся в объект ReportViewer (в IIS 5.1 и во встроенном сервере работало, так что пути правильные), хотя в той же секции есть обработчик

     <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" />
     

     Такое ощущение, что  не работает обработчик отчетов (он не загружается по умолчанию) - что я должен еще делать?

    > Самое главное надо убрать все те настройки из файла web.config которые относятся к старой версии IIS

    А какие настройки я должен убрать?

    27 января 2014 г. 15:05
  • "Такое ощущение, что  не работает обработчик отчетов (он не загружается по умолчанию) - что я должен еще делать?" - да, скорее всего именно так. Попробуйте переустановить ASP.NET. Для этого выполните команду:

    aspnet_regiis -i

    именно для той версии, которую используете. Подробности смотрите в MSDN, ссылка которую привёл выше.

    "А какие настройки я должен убрать?" - если приложение запускается, то значит их уже нет.


    Сделаем содержимое сообщества лучше, вместе!

    27 января 2014 г. 18:45
    Модератор
  • Первое, что я сделал - это запустил команду aspnet_regiis -i, но это не помогло. Видимо, какой-то косяк при установке IIS 7.5 на Windows 7, потому что при установке приложения на Windows Server 2008 (и на 32, и на 64-разрядные версии, там где IIS 7.0 встроен изначально) - все работает нормально, даже не перестраивая Web.config !


    • Предложено в качестве ответа YatajgaModerator 31 января 2014 г. 19:48
    • Помечено в качестве ответа YatajgaModerator 6 февраля 2014 г. 6:08
    28 января 2014 г. 18:42
  • Возможно там пул приложений по умолчанию запускается в классическом режиме, в этом случае настройки менять не надо. Тоже самое можете сделать и в IIS 7.5, поменять режим пула. Возможно и косяк с установкой IIS тоже, как вы уже сказали.

    Сделаем содержимое сообщества лучше, вместе!

    28 января 2014 г. 18:47
    Модератор
  • Я был уверен, но на всякий случай проверил - пул запускается в Integrated режиме
    28 января 2014 г. 19:17
  • Ну тогда, скорее всего проблема с установкой IIS и регистрацией обработчиков.

    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа YatajgaModerator 31 января 2014 г. 19:49
    • Помечено в качестве ответа YatajgaModerator 6 февраля 2014 г. 6:08
    28 января 2014 г. 19:21
    Модератор