Практическое руководство. Обновление веб-приложения ASP.NET до версии ASP.NET 4

При использовании Visual Studio для открытия веб-проекта, разработанного для .NET Framework 2.0, платформа .NET Framework 3.0, .NET Framework 3.5 или Visual Studio способна автоматически выполнить все изменения файлов Web.config, необходимые для запуска с помощью .NET Framework 4. Если проект является локальным проектом служб IIS, а используется платформа IIS 7.0, то Visual Studio также может переназначить приложение пулу приложений, связанному с .NET Framework 4.

Рекомендуется использовать Visual Studio для выполнения задач, необходимых при обновлении. Если автоматическое обновление с помощью Visual Studio не выполняется, необходимо вручную изменить файл Web.config и связать приложение в службах IIS с платформой .NET Framework 4.

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

ПримечаниеПримечание

Не обновляйте приложение IIS, если оно содержит вложенные приложения, которые предназначены для более ранних версий платформы .NET Framework. Если веб-приложение IIS, предназначенное для .NET Framework 3.5 или .NET Framework предыдущих версий, вложено в приложение IIS, предназначенное для .NET Framework 4, то во время компиляции вложенного приложения компилятор может выводить сообщения об ошибках. Это происходит потому, что файлы Web.config наследуют параметры от файлов, находящихся выше в иерархии файлов конфигурации. В .NET Framework 4 предусмотрена обратная совместимость, поэтому вложенное веб-приложение, предназначенное для .NET Framework 4, может наследовать параметры от файлов Web.config для более старых версий. Тем не менее, более старые версии платформы .NET Framework не имеют прямой совместимости, поэтому они не могут наследовать параметры из файла Web.config .NET Framework 4.

Обновление приложения с помощью Visual Studio

  1. Откройте веб-сайт или проект в Visual Studio.

  2. При появлении начального диалогового окна мастера преобразования Visual Studio нажмите кнопку Далее.

    Этот мастер отображается при открытии проекта веб-приложения или решения. Он не отображается при открытии проекта веб-сайта, который не входит в решение.

    Диалоговое окно мастера преобразования Visual Studio
  3. При преобразовании проекта выберите параметры резервного копирования в мастере преобразования Visual Studio и нажмите кнопку Далее в диалоговом окне Выбор создания резервной копии.

    Диалоговое окно резервного копирования мастера преобразования Visual Studio

    Visual Studio обновит файл проекта до формата Visual Studio 2010. При обновлении решения, а не отдельного проекта Visual Studio обновляет файл решения до формата Visual Studio 2010.

  4. При преобразовании проекта перейдите в мастер преобразования Visual Studio, нажмите кнопку Далее в диалоговом окне Все готово для преобразования.

    Диалоговое окно готовности мастера преобразования Visual Studio
  5. При открытии веб-проекта на компьютере без установленной платформы .NET Framework 3.5 перейдите к окну Целевая платформа проекта не установлена, выберите команду Перенаправить проект для .NET Framework 4 и нажмите кнопку ОК.

    Диалоговое окно "Не установлена конечная платформа проекта"
  6. При открытии веб-проекта на компьютере с установленной платформой .NET Framework 3.5 перейдите к диалоговому окну Обнаружен веб-сайт для более старой версии .NET Framework и снимите флажок, если обновление всех веб-сайтов или проектов в решении не требуется.

    Диалоговое окно выбора версии платформы .NET Framework
  7. В диалоговом окне нажмите кнопку Да.

    Visual Studio обновляет файл Web.config. Изменения файла Web.config приведены далее в разделе, описывающем обновление файла Web.config вручную. Visual Studio не обновляет комментарии. Таким образом, после преобразования файл Web.config может содержать комментарии, ссылающиеся на более ранние версии платформы .NET Framework.

    Visual Studio автоматически устанавливает атрибут controlRenderingCompatibilityVersion элемента pages равным 3.5. Для использования изменений XHTML и специальных возможностей ASP.NET 4 следует удалить этот параметр. Дополнительные сведения приведены далее в разделе, описывающем обновление файла Web.config вручную.

  8. При преобразовании проекта перейдите в мастер преобразования Visual Studio и нажмите кнопку Закрыть в диалоговом окне Преобразование выполнено.

    Диалоговое окно закрытия мастера преобразования Visual Studio
  9. Если проект не является локальным проектом IIS, выполните ассоциацию приложения IIS с Visual Studio при развертывании приложения в службах IIS. Дополнительные сведения см. далее в разделе об используемой версии служб IIS.

    Если приложение IIS связано с .NET Framework 2.0, то сайт не будет работать. ASP.NET создаст ошибки с сообщением о нераспознанном атрибуте targetFramework.

  10. Если проект является локальным проектом служб IIS версии 6.0, выполните ассоциацию приложения IIS с Visual Studio согласно указаниям, приведенным ниже для IIS 6.0. 

    Если проект является локальным проектом IIS, Visual Studio автоматически выполняет эту ассоциацию. Он назначает приложение первому доступному пулу приложений для .NET Framework 4. Если пул приложения не существует, то Visual Studio создает его.

    ПримечаниеПримечание

    Интерфейс API метабазы IIS 6.0, используемый Visual Studio для назначения и создания пулов приложений, по умолчанию недоступен в системах Windows Vista и Windows 7. Чтобы сделать его доступным, включите Уровень совместимости метабазы IIS 6 на панели управления Windows, выбрав элементы Программы и компоненты и Включение или отключение компонентов Windows. На следующей иллюстрации показано диалоговое окно Компоненты Windows.

    Диалоговое окно включения и отключения компонентов Windows
  11. Если проект содержит код, который обращается к объекту HttpBrowserCapabilities (в свойстве HttpRequest.Browser), проверьте корректность работы этого кода.

    Файлы определения браузера, предоставляющие сведения объекту HttpBrowserCapabilities, были изменены в версии ASP.NET 4. Выполненные изменения не совместимы с более ранними версиями ASP.NET. При обнаружении ошибки и нежелании изменения кода для поддержки ASP.NET 4 можно скопировать файлы определения браузера ASP.NET 3.5 из папки ASP.NET 3.5 Browsers на компьютере с установленной версией ASP.NET 3.5 в папку ASP.NET 4 Browsers. Папка Browsers для ASP.NET имеет следующий путь:

    %SystemRoot%\Microsoft.NET\Framework\versionNumber\Config\Browsers

    После копирования файлов определения браузера необходимо запустить средство aspnet_regbrowsers.exe. Дополнительные сведения см. в разделе Серверные веб-элементы управления ASP.NET и возможности обозревателей.

Обновление файла приложения Web.config платформы .NET Framework 3.5 до версии .NET Framework 4 вручную

  1. Убедитесь в том, что приложение предназначено для версии ASP.NET 3.5.

    ПримечаниеПримечание

    В этом разделе описан процесс преобразования файла Web.config из версии .NET Framework 3.5 в .NET Framework 4. Для обновления веб-приложения версии до .NET Framework 3.5 следует вначале преобразовать его в версию .NET Framework 3.5. Дополнительные сведения см. в разделе Преобразование в ASP.NET 3.5.

  2. Откройте файл Web.config в корневой папке приложения.

  3. Перейдите к разделу configSections и удалите элемент sectionGroup с именем system.web.extensions.

  4. Перейдите к разделу system.web и найдите в нем элемент compilation. Удалите все элементы add, ссылающиеся на сборки платформы .NET Framework.

    Имена сборок платформы обычно начинаются с "System.". Атрибут assembly в таких сборках имеет значение Version=3.5.0.0. При этом некоторые записи сборок с номером версии 3.5.0.0 могут ссылаться на сборки, установленные в составе дополнительных выпусков или в пользовательских сборках. Не удаляйте такие записи. Если файл Web.config содержит такие ссылки, следует просмотреть их, чтобы определить наличие более поздней версии и необходимость изменения ссылки на версию.

  5. Добавьте атрибут targetFramework к элементу compilation в разделе system.web, как показано в следующем примере:

    <compilation targetFramework="4.0">
    

    В открывающем теге раздела pages добавьте атрибут controlRenderingCompatibility, как показано в следующем примере.

    <pages controlRenderingCompatibilityVersion="3.5"/>
    

    Многие элементы управления ASP.NET 4 отображают HTML-код, который соответствует стандартам специальных возможностей и XHTML. При этом преобразуемый веб-сайт может иметь правила CSS или клиентские скрипты, которые будут работать некорректно, если для веб-страниц изменяется способ отображения HTML-кода. Чтобы воспользоваться расширенными возможностями отображения элементов управления в ASP.NET 4, можно опустить этот атрибут. Дополнительные сведения см. в разделе ControlRenderingCompatibilityVersion.

  6. В разделе system.codedom перейдите к коллекции compilers и удалите элементы compiler для c# и vb.

  7. Удалите весь код между открывающими и закрывающими тегами раздела system.webserver, но не удаляйте сами теги.

  8. Удалите весь код между открывающими и закрывающими тегами раздела runtime, но не удаляйте сами теги.

  9. Если файл Web.config изменен, а изменения затрагивают пользовательские сборки или классы, то убедитесь в том, что сборки или классы совместимы с .NET Framework 4.

    Ниже приведен пример файла Web.config для простого веб-приложения, преобразованного из версии платформы .NET Framework 3.5 в версию .NET Framework 4.

    <?xml version="1.0"?>
    <!-- 
        Note: As an alternative to hand editing this file you can use the 
        web admin tool to configure settings for your application. Use
        the Website->Asp.Net Configuration option in Visual Studio.
        A full list of settings and comments can be found in 
        machine.config.comments usually located in 
        \Windows\Microsoft.Net\Framework\v2.x\Config 
    -->
    <configuration>
      <appSettings/>
      <connectionStrings>
        <add name="NorthwindConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\NORTHWND.MDF;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
      </connectionStrings>
      <system.web>
    <!-- 
        Set compilation debug="true" to insert debugging 
        symbols into the compiled page. Because this 
        affects performance, set this value to true only 
        during development.
    -->
      <compilation debug="true" targetFramework="4.0">
        <assemblies>
        </assemblies>
      </compilation>
    <!--
        The <authentication> section enables configuration 
        of the security authentication mode used by 
        ASP.NET to identify an incoming user. 
    -->
      <authentication mode="Windows"/>
    <!--
        The <customErrors> section enables configuration 
        of what to do if/when an unhandled error occurs 
        during the execution of a request. Specifically, 
        it enables developers to configure html error pages 
        to be displayed in place of a error stack trace.
            <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
    -->
      <pages controlRenderingCompatibilityVersion="3.5"/></system.web>
      <system.codedom>
      </system.codedom>
    <!-- 
        The system.webServer section is required for running ASP.NET AJAX under Internet
        Information Services 7.0.  It is not necessary for previous version of IIS.
    -->
      <system.webServer>
      </system.webServer>
    </configuration>
    

Ассоциация приложения IIS с платформой .NET Framework 4 в IIS 7.0

  1. В операционной системе Windows запустите средство Inetmgr.

  2. В области Подключения разверните узел сервера и щелкните элемент Пулы приложений.

  3. На странице Пулы приложений выберите пул приложений, содержащий приложение, которое необходимо изменить.

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

  5. Выберите приложение, для которого необходимо изменить пул приложений, а затем щелкните команду Изменить пул приложений на панели Действия.

  6. В диалоговом окне Выбор пула приложений выберите из списка Пул приложений, связанный с .NET Framework 4, а затем нажмите кнопку ОК.

Ассоциация приложения IIS с платформой .NET Framework 4 в IIS 6.0

Показ: