Поделиться через


Общие сведения о миграции ASP.NET 2.0

Обновлен: Ноябрь 2007

Многие из концепций программирования, использовавшихся в более ранних версиях ASP.NET, в ASP.NET версии 2.0 остались без изменений, поэтому разработка приложений в ASP.NET 2.0 не будет новой для пользователей ASP.NET версии 1.x. ASP.NET версии 2.0 запускается на том же оборудовании и операционных системах, что и приложения ASP.NET 1.x, включая Microsoft Windows 2000 и Microsoft IIS 5.0, Microsoft Windows XP и IIS 5.1, а также Microsoft Windows Server 2003 и IIS 6.0.

При необходимости выполнить миграцию существующего веб-приложения в ASP.NET следует предварительно ознакомиться с новыми функциями ASP.NET 2.0. Самые значительные изменения произошли в модели выделения кода для страниц, структуре папок веб-приложения и модели компиляции страниц.

Перед выполнением миграции следует убедиться, что приложение ASP.NET 1.x может быть скомпилировано и запущено на платформе .NET Framework той версии, на которой оно было разработано. Кроме этого, перед началом миграции следует убедиться, что платформа Microsoft .NET Framework версии 2.0 установлена и работает.

В этом разделе рассматриваются общие вопросы, на которые следует обратить внимание перед выполнением миграции. Этот раздел состоит из следующих подразделов:

  • Преимущества миграции

  • Модели страниц

  • Совместное использование данных в разных версиях ASP.NET

  • Проверка подлинности в разных версиях ASP.NET

  • Конфликты имен

  • Соответствие разметки

  • Свойство HttpOnly и межузловые сценарии

Преимущества миграции

Существует много преимуществ миграции веб-приложения в ASP.NET версии 2.0. К ним относится улучшенное разделение разметки и кода, зарезервированные папки приложения, а также автоматическая компиляция кода.

Новая модель распределения кода на основе разделяемых классов обеспечивает улучшенное разделение разметки и кода, а также устраняет необходимость использовать объявления элементов управления и код событий в файлах с выделенным кодом. В модели компиляции страниц ASP.NET файлы с выделенным кодом во время выполнения компилируются в несколько сборок по запросу соответствующих ASPX-файлов.

В настоящее время в ASP.NET используется улучшенная структура веб-приложений на основе зарезервированных папок. В этих папках находится специальное содержимое, позволяющее упорядочить приложение, чтобы оно выполнялось более эффективно. Некоторые зарезервированные папки, например App_Data, не предоставляют свое содержимое в ответ на веб-запросы. Обращаться к ним можно из кода приложения. Дополнительные сведения см. в разделе Структура веб-узла ASP.NET.

По запросу к ресурсу на веб-узле компилятор ASP.NET 2.0 автоматически выполняет компиляцию кода приложения и зависимых ресурсов. Например, в ASP.NET 2.0 можно просто сохранить изменения, внесенные в существующую веб-страницу, и зависимые ресурсы, а при следующем запросе на страницу будет скомпилирована эта страница вместе с ее ресурсами. К таким ресурсам относятся файлы кода в папке App_Code, файлы ресурсов в папках App_GlobalResources и App_LocalResources, а также темы в папке App_Themes. Дополнительные сведения о модели компиляции страниц см. в разделе Общие сведения о компиляции в ASP.NET.

При выполнении миграции большого приложения рекомендуется использовать Visual Web Developer 2005, Visual Web Developer 2005, экспресс-выпуск, Visual Studio 2005 или Visual Studio 2005 Team System. В них имеется мастер миграции, который автоматически выполняет многие задачи, необходимые для осуществления обычной миграции. Мастер выполняет действия, необходимые для преобразования веб-приложений ASP.NET 1.x в веб-приложения ASP.NET 2.0.

Необязательно выполнять миграцию веб-приложений, поскольку ASP.NET версии 2.0 обладает высокой степенью совместимости с предыдущими версиями. Даже без миграции разработчик может использовать в своем приложении многие из возможностей ASP.NET 2.0, если это приложение использует платформу .NET Framework версии 2.0. Сведения о настройке существующего веб-приложения на использование платформы .NET Framework версии 2.0 см. в разделе Практическое руководство. Выполнение приложений ASP.NET 1.x в платформе .NET Framework 2.0.

Модели страниц

Модель веб-страниц с выделенным кодом ASP.NET позволяет хранить разметку веб-страницы в одном файле (ASPX-файле), а программный код — в другом файле (файле с выделенным кодом). Модель распределения кода в ASP.NET версии 2.0 отличается от предыдущих версий тем, что в ней используются новые свойства языка, известные как разделяемые классы. Новая модель распределения кода в ASP.NET версии 2.0 обеспечивает улучшенное разделение разметки и кода по сравнению с предыдущими версиями ASP.NET.

Веб-страницы, в которых используется старая модель распределения кода на базе атрибута CodeBehind директивы @ Page, также могут работать в ASP.NET версии 2.0. Рекомендуется тем не менее выполнить миграцию этих страниц в новую модель распределения кода, предусматривающую использование атрибута CodeFile директивы @ Page и частичное определение разделяемых классов в файле с выделенным кодом, чтобы иметь возможность пользоваться преимуществами улучшенного разделения разметки и кода и автоматической компиляции страниц. Веб-страницы, использующие старую модель распределения кода, должны компилироваться вручную.

Можно внести изменения вручную, как описано в разделе Практическое руководство. Преобразование веб-страницы ASP.NET 1.1, использующей атрибут CodeBehind, в страницу ASP.NET 2.0, или использовать один из выпусков Microsoft Visual Studio 2005, содержащих мастер миграции, например Visual Web Developer 2005, экспресс-выпуск.

ASP.NET версии 1.1 также поддерживает модель распределения кода, в которой атрибут CodeBehind директивы @ Page был заменен на атрибут Src. Веб-страница, использующая атрибут Src, будет функционировать в ASP.NET версии 2.0 и не требует каких-либо изменений для запуска.

В качестве альтернативы модели распределения кода существует модель однофайловых страниц, в которой разметка и программный код страницы помещаются в один и тот же физический ASPX-файл. Однофайловые страницы, созданные в предыдущих версиях ASP.NET, будут функционировать в ASP.NET версии 2.0 и не требуют каких-либо изменений для запуска.

Совместное использование данных в разных версиях ASP.NET

Можно выполнить миграцию определенных частей веб-узла в ASP.NET версии 2.0, оставив другие части без изменения. Если веб-узел разделен на независимые веб-приложения, взаимодействующие для обеспечения функционирования всего узла, можно выполнить миграцию только некоторых приложений, оставив другие приложения без изменений. В этом случае приложения, уже перенесенные на новую версию, и остальные приложения не смогут совместно использовать состояние приложения. Подобным образом состояние сеанса не может совместно использоваться различными приложениями, если только не было создано пользовательское решение для управления состоянием сеанса, к которому можно обращаться как со страниц ASP.NET версии 1.x, так и страниц ASP.NET версии 2.0. Дополнительные сведения см. в разделе Реализация поставщика хранилища состояний сеансов.

Проверка подлинности в разных версиях ASP.NET

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

Настройка проверки подлинности для различных версий ASP.NET аналогична процессу настройки проверки подлинности для сети веб-серверов (фермы серверов). В обоих случаях явно задаются атрибуты validationKey и decryptionKeyэлемента machineKey для приложений, совместно использующих билеты проверки подлинности с одним ключом. Для поддержки проверки подлинности в различных версиях ASP.NET необходимо выполнить дополнительные настройки, задав для атрибута decryptionэлемента machineKey значение 3DES в файле Web.config приложения ASP.NET версии 2.0. Шифрованием по умолчанию для ASP.NET версии 2.0 является AES, а для более ранних версий — 3DES. Дополнительные сведения см. в разделе Общие сведения о проверке подлинности форм ASP.NET.

Конфликты имен

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

В ASP.NET версии 2.0 используется структура веб-узла, отличная от предыдущих версий. Чтобы упростить работу с веб-приложениями, в ASP.NET резервируются определенные имена папок и файлов, которые можно использовать для определенных типов содержимого. Содержимое зарезервированных папок не предоставляется по выполненному к ним веб-запросу. Это может привести к неполадкам в существующем приложении. Поэтому перед выполнением миграции отдельных файлов приложения рекомендуется изменить имена всех папок и файлов в приложении, которые конфликтуют с именами зарезервированных папок и файлов в ASP.NET версии 2.0. Дополнительные сведения о зарезервированных папках в структуре веб-узлов ASP.NET см. в разделе Макет веб-узла ASP.NET.

Соответствие разметки

По умолчанию вся разметка, созданная ASP.NET, и серверные веб-элементы управления в составе ASP.NET теперь соответствуют стандарту XHTML 1.0 Переходный (Transitional). Это может привести к возникновению непредвиденных ошибок при отрисовке HTML-страниц после выполнения миграции. Для осуществления миграции веб-приложения можно задать для атрибута режима (mode) элемента xhtmlConformance значение Legacy в файле Web.config. Это значение следует использовать только для выполнения миграции. В долгосрочной перспективе рекомендуется запускать приложение с атрибутом modeэлемента xhtmlConformance, установленным в значение Transitional. Кроме этого, рекомендуется добавить к преобразованным страницам элемент DOCTYPE. Дополнительные сведения о преимуществах использования веб-страниц, соответствующих стандарту XHTML, см. в разделе ASP.NET и XHTML.

Свойство HttpOnly и межузловые сценарии

Свойство HttpOnly класса HttpCookie не использовалось до платформы .NET Framework версии 2.0. Установка этого свойства в значение true позволяет снизить риск межузловых сценарных атак. Для свойства HttpOnly автоматически устанавливается значение true для Cookie проверки подлинности на основе форм и кода сеанса, чтобы эти объекты Cookie не были доступными для клиентских сценариев. Если преобразованная веб-страница вызывает исключение NullReferenceException, это может означать, что клиентский сеанс был прерван, поскольку для свойства HttpOnly было установлено значение true. В этом случае можно использовать одно из следующих решений:

  • Установите для свойства HttpOnly каждого Cookie значение false в обработчике событий EndRequest класса HttpApplication в файле Global.asax.

  • Создайте пользовательский модуль, который копирует Cookie в другой Cookie и сбрасывает установленное для свойства HttpOnly значение, чтобы оно было доступно для клиентского сценария.

  • Создайте пользовательский диспетчер идентификации сеанса, который не устанавливает свойство HttpOnly в значение true.

Дополнительные сведения о снижении угрозы межузловых сценарных атак см. в статье базы знаний Майкрософт Снижение риска межузловых атак с помощью свойства HttpOnlyCookies.

См. также

Основные понятия

Общие сведения о проектах веб-приложений

Общие сведения о проверке подлинности форм ASP.NET

Ссылки

Элемент machineKey (схема параметров ASP.NET)