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

Visual Studio 2010

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

На платформе .NET Framework поддерживается установка нескольких версий среды CLR на один компьютер. По умолчанию при установке платформы .NET Framework на компьютер с уже установленной средой выполнения все приложения ASP.NET автоматически обновляются для использования этой версии платформы .NET Framework. Несмотря на то, что более поздние версии платформы .NET Framework разработаны как обратно совместимые, существует возможность настроить приложение ASP.NET для использования более ранней версии среды выполнения.

В этом разделе рассматриваются следующие темы:

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

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

На платформе .NET Framework поддерживается установка нескольких версий среды CLR на один компьютер. По умолчанию при установке .NET Framework на компьютер с уже установленной средой выполнения все приложения ASP.NET автоматически обновляются для использования этой версии .NET Framework. Единственное исключение — приложения, привязанные к несовместимой или к более поздней версии среды выполнения. (Совместимость обычно определяется номером версии платформы .NET Framework. Среды выполнения с разными основными номерами версий обычно несовместимы, если же отличаются дополнительные номера версий и номера построений, то такие среды выполнения совместимы. Несмотря на то, что более поздние версии .NET Framework разработаны как обратно совместимые, существует возможность настроить приложение ASP.NET для использования более ранней версии среды выполнения.

Карты сценариев в приложениях ASP.NET

Когда на одном компьютере установлено несколько версий .NET Framework, каждая установка имеет свою собственную версию расширения ISAPI ASP.NET (Aspnet_isapi.dll). Расширение ISAPI ASP.NET определяет, какую версию .NET Framework будет использовать приложение. Можно настроить приложение ASP.NET для использования любого расширения ISAPI ASP.NET. Чтобы указать, какое расширение ISAPI ASP.NET следует использовать приложению ASP.NET, в службах IIS для приложения регистрируется карта сценариев (иногда называемая картой приложения).

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

Чтобы упростить настройку карты сценариев для приложения ASP.NET, каждая установка .NET Framework имеет свою собственную версию инструмента регистрации IIS для ASP.NET (Aspnet_regiis.exe). По умолчанию этот инструмент устанавливается в следующую папку:

%корневая_папка_системы%\Microsoft.NET\Framework\Номер_версии

Администраторы могут использовать этот инструмент, чтобы сопоставить приложение ASP.NET со связанной с данным инструментом версией ISAPI ASP.NET.

a99txfy5.alert_note(ru-ru,VS.100).gifПримечание.

Поскольку программа Aspnet_regiis.exe связана с определенной версией .NET Framework, для перенастройки карты сценариев приложения ASP.NET следует применять соответствующую версию программы. Программа Aspnet_regiis.exe перенастраивает карту сценариев приложения ASP.NET в соответствии с версией ISAPI ASP.NET, соответствующей этой программе.

Этот инструмент можно также использовать для отображения состояния всех установленных версий ASP.NET, регистрации связанной версии ASP.NET, создания папок клиентских сценариев и выполнения других операций настройки.

Дополнительные сведения о картах сценариев и о настройке IIS см. в разделе Установка сопоставлений приложений в IIS 6.0 (IIS 6.0). Дополнительные сведения об обновлении карт сценариев для приложения ASP.NET см. в разделе Программа регистрации IIS для ASP.NET (Aspnet_regiis.exe).

Счетчики производительности ASP.NET

Счетчики производительности позволяют контролировать работу ASP.NET с помощью консоли Windows "Производительность". Каждая версия .NET Framework устанавливает свой набор объектов счетчиков производительности для контроля как приложения ASP.NET, так и ASP.NET в целом. Эти объекты используют соглашения об именах "ASP.NET Apps v.X.X.XXXX.X" и "ASP.NET v.X.X.XXXX.X" соответственно, где v.X.X.XXXX.X обозначает версию ASP.NET.

Кроме того, .NET Framework также устанавливает счетчики производительности системы ASP.NET и приложения ASP.NET, которые можно использовать с любой установленной версией ASP.NET. Хотя эти счетчики годятся для любых версий ASP.NET, они всегда соответствуют последней установленной версии. Если старшая версия ASP.NET удаляется, счетчики автоматически переключаются на ставшую старшей версию ASP.NET.

Служба состояний ASP.NET

Служба состояний ASP.NET может использоваться для управления состоянием сеанса на компьютере. Все версии ASP.NET, которые установлены на одном компьютере, пользуются одной и той же службой состояний, установленной с самой старшей версией ASP.NET. Эта версия регистрируется с именем службы aspnet_state. Таким образом, когда последняя версия ASP.NET удаляется, вместо нее регистрируется и используется та версия, которая стала старшей. Дополнительные сведения о службе состояний ASP.NET см. в разделе Режимы состояний сеанса.

Сервер состояний SQL Server ASP.NET

Сервер состояний SQL Server ASP.NET используется для управления состоянием сеанса SQL на компьютере. Все версии ASP.NET, которые установлены на одном компьютере, пользуются одним и тем же сервером состояний SQL Server, установленным с самой старшей версией ASP.NET. Когда последняя версия ASP.NET удаляется, вместо нее регистрируется и используется ставшая старшей версия. Дополнительные сведения о сервере состояний SQL Server ASP.NET см. в разделе Режимы состояний сеанса.

Управление несколькими версиями ASP.NET

.NET Framework позволяет устанавливать на компьютер несколько версий среды CLR. Это позволяет приложению ASP.NET использовать нужную версию, не влияя на работу других приложений. В следующих разделах объясняется, как устанавливать, удалять и распространять несколько версий ASP.NET на одном компьютере.

Установка нескольких версий ASP.NET

Чтобы добавить на компьютер версию ASP.NET, следует выполнить программу установки распространяемого пакета .NET Framework (Dotnetfx.exe) для версии, которую необходимо установить. По умолчанию все имеющиеся приложения ASP.NET автоматически перенастраиваются в ходе установки на устанавливаемую версию среды выполнения, если удовлетворены следующие требования:

  • Устанавливаемая версия .NET Framework является более новой, чем версия, сопоставленная с приложением в настоящий момент.

  • Устанавливаемая версия .NET Framework совместима с версией, сопоставленной с приложением. Как правило, совместимость определяется номером версии. Версии, у которых различаются дополнительные номера редакций или номера построений, совместимы, в то время как версии, у которых различаются основные номера редакций, являются несовместимыми.

    a99txfy5.alert_note(ru-ru,VS.100).gifПримечание.

    Несмотря на то, что при соблюдении вышеуказанных условий приложения ASP.NET автоматически обновляются для использования устанавливаемой версию ASP.NET, пользовательские параметры конфигурации в текущем файле Machine.config не передаются в устанавливаемый файл Machine.config. Если в приложении применяются пользовательские параметры конфигурации, следует либо вручную обновить файл Machine.config, либо с помощью инструмента регистрации IIS ASP.NET (Aspnet_regiis.exe) вернуть сопоставление этого приложения с предыдущей версией ASP.NET.

Чтобы предотвратить автоматическое сопоставление всех приложений с устанавливаемой версией .NET Framework, необходимо использовать параметр командной строки /noaspupgrade в программе установки Dotnetfx.exe. В следующем примере показан синтаксис команды:

Dotnetfx.exe /c:"install /noaspupgrade"

Дополнительные сведения о распространяемом пакете .NET Framework см. в разделе Распространение .NET Framework.

a99txfy5.alert_note(ru-ru,VS.100).gifПримечание.

Если платформа .NET Framework устанавливается с помощью элемента Установка и удаление программ в панели управления Windows или с помощью мастера настройки сервера Windows, ASP.NET включается в консоль управления безопасностью по умолчанию. Если же платформа .NET Framework установлена с помощью Microsoft Visual Studio, программы обновления Windows или распространяемого пакета .NET Framework (Dotnetfx.exe), то ASP.NET по умолчанию отключена.

Удаление версии ASP.NET

Если на компьютере установлено несколько версий ASP.NET, можно удалить любую из них. Удаление ASP.NET обычно выполняется путем удаления .NET Framework с помощью элемента Установка и удаление программ в панели управления Windows. В процессе удаления программа установки вызывает инструмент для регистрации IIS ASP.NET (Aspnet_regiis.exe) с параметром -u (флаг удаления).

a99txfy5.alert_note(ru-ru,VS.100).gifПримечание.

Если требуется удалить только версию ASP.NET, не удаляя связанную с ней .NET Framework, можно использовать непосредственно программу Aspnet_regiis.exe. Каждая установка .NET Framework содержит соответствующую версию этого инструмента. Чтобы удалить только ASP.NET, необходимо использовать параметр -u инструмента той же версии, что и подлежащая удалению версия ASP.NET. Дополнительные сведения см. в разделе Программа регистрации IIS для ASP.NET (Aspnet_regiis.exe).

Параметр -u инструмента Aspnet_regiis.exe выполняет следующие действия:

  • Все приложения ASP.NET, в настоящий момент сопоставленные с удаляемой версией ASP.NET, сопоставляются повторно с самой поздней совместимой версией ASP.NET, доступной на компьютере. Если совместимой версии нет, карта сценариев для приложения удаляется полностью.

    a99txfy5.alert_caution(ru-ru,VS.100).gifВнимание!

    Удаление карт сценариев заставит IIS обрабатывать страницы ASP.NET как обычный текст. В результате клиент может получить исходный код.

  • Если удаляемая версия ASP.NET является самой старшей версией, то служба состояний ASP.NET сопоставляется с самой старшей совместимой версией. Если совместимых версий не осталось, служба состояний ASP.NET удаляется. (Служба состояний ASP.NET, используемая всеми совместимыми версиями ASP.NET, всегда сопоставляется с самой старшей установленной версией ASP.NET.)

  • Объекты производительности и соответствующие им счетчики производительности, относящиеся к удаляемой версии, также удаляются. Универсальные объекты производительности и счетчики, применяемые ко всем установленным версиям ASP.NET и приложениям ASP.NET, направляются к самой новой из оставшихся на компьютере версий.

  • Если на компьютере не осталось установок ASP.NET, учетная запись ASPNET и связанные с ней списки управления доступом удаляются.

Дополнительные сведения о других следствиях установки нескольких версий ASP.NET см. в разделе Общие сведения об одновременном выполнении в ASP.NET.

Распространение .NET Framework третьей стороной

Сторонние приложения могут упаковывать и устанавливать .NET Framework как часть собственной установки в соответствии со специальной лицензией на распространение. Это позволяет приложению устанавливать определенную версию .NET Framework, которая необходима ему для работы. Распространяемый пакет .NET Framework (Dotnetfx.exe) предоставляется приложению для развертывания вместе со средой выполнения. Стандартный сценарий установки Dotnetfx.exe может не подойти приложению. Если это так, то разработчик стороннего приложения может использовать описанные ниже параметры при установке .NET Framework как части приложения.

Дополнительные сведения о распространяемом пакете .NET Framework см. в разделе Распространение .NET Framework. Дополнительные сведения о пользовательском лицензионном соглашении распространяемого пакета см. в разделе Местонахождение свободно распространяемого пакета .NET Framework.

Отключение автоматического обновления карты сценариев

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

В качестве части сценария установки программа Dotnetfx.exe обычно вызывает инструмент регистрации IIS ASP.NET (Aspnet_regiis.exe) с параметром -i для установки ASP.NET. Этот параметр пытается обновить карты сценариев всех установленных на компьютере приложений ASP.NET. Чтобы предотвратить автоматическое сопоставление всех приложений с устанавливаемой версией .NET Framework, необходимо использовать параметр командной строки /noaspnetupgrade в программе установки Dotnetfx.exe. Этот параметр заставляет программу установки использовать параметр -ir программы Aspnet_regiis.exe, что приводит к пропуску этапов автоматического обновления карт сценариев, стандартной документации и подкачки MIME. В следующем примере показан синтаксис команды:

Dotnetfx.exe /c:"install /noaspupgrade"

Обновление карт сценариев вручную

Иногда необходимо установить карты сценариев для приложения вручную. Если приложению необходима собственная виртуальная папка, предназначенная для устанавливаемой версии .NET Framework, следует убедиться, что программа установки приложения явным образом вызывает программу Aspnet_regiis.exe с параметром -s или -sn для установки карт сценариев.

В следующем примере показан образец командной строки, которая обновляет карты сценариев для приложения с именем SampleApp1.

Aspnet_regiis.exe -s W3SVC/1/ROOT/SampleApp1

Дополнительные сведения см. в разделе Программа регистрации IIS для ASP.NET (Aspnet_regiis.exe).

.Унификация сборок .NET Framework

При параллельном выполнении приложение может состоять из компонентов, построенных с использованием разных версий .NET Framework. Это может вызвать конфликты между зависимостями компонентов. Например, предположим, что компонент А построен с использованием .NET Framework версии 1.1, и ему необходима версия 1.1 сборки System.Data. А компонент В построен с использованием .NET Framework версии 1.1, и ему необходима версия 2.0 сборки System.Data. Если эти версии сборок несовместимы, но загружаются одновременно, это может привести к неожиданным несоответствиям типов или к другим проблемам.

Способы определения необходимой приложению версии .NET Framework

Чтобы разрешить использование разных версий одной и той же сборки, когда приложение использует компоненты, созданные в разных версиях .NET Framework, связанная с приложением версия среды выполнения определяет, какие версии сборок .NET Framework используются приложением и всеми его компонентами. В случае предыдущего примера, если приложение связано с версией 2.0 .NET Framework, то загружается сборка System.Data версии 2.0, которая и используется всеми компонентами приложения. Ссылка компонента А на версию 1.1 сборки System.Data во время выполнения заменяется ссылкой на версию 2.0.

Если получена обновленная версия конкретной сборки, то можно связать приложение с этой сборкой, независимо от версии .NET Framework, с которой сопоставлено приложение. Чтобы сделать это, можно добавить элементы <перенаправления привязки> в файл Machine.config или Web.config. Эти элементы связывают приложение с обновленной сборкой, заменившей существующую сборку для определенных типов приложения. Например, если в будущем появится новая версия библиотеки System.Web.Service.dll, которая будет поддерживать SOAP версии 1.2, может понадобиться, чтобы приложение использовало именно эту версию вместо версии, которая была первоначально установлена с .NET Framework.

Это поведение можно также переопределить в файле конфигурации основного приложения ASP.NET (Aspnet.config). ASP.NET использует этот файл, чтобы обеспечить соответствие версий System.Web.dll и System.Web.RegularExpressions.dll с версией, связанной с приложением, независимо от каких-либо переопределений в файле Web.config.

Иногда может потребоваться использовать компонент, построенный с помощью более новой версии ASP.NET, в приложении, созданном в более ранней версии. Связанная с приложением версия ISAPI ASPNET всегда определяет используемую для приложения версию среды выполнения. Если приложение настроено для использования более ранней версии .NET Framework, то во время выполнения компонент будет автоматически перенаправлен на использование этой версии.

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

  • Необходимо убедиться, что компонент не использует функциональные возможности и поведение, относящиеся к более поздней версии .NET Framework. Они могут быть недоступны в более ранней версии среды выполнения.

  • ASP.NET использует карты сценариев в IIS, чтобы привязать приложение к версии среды выполнения. Элементы конфигурации <поддерживаемая_среда_выполнения> и <требуемая_среда_выполнения> не применимы к приложениям ASP.NET.

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

К началу

Практические и пошаговые руководства

Показ: