Быстрый способ выяснить, работает ли приложение под версией 1.1, - запустить быстрый скрипт, отображающий версию среды:
<%@ Page Language="C#" %>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
Response.Write(System.Environment.Version.ToString());
}
</script>
Или, если вы получаете желтые экраны смерти, тогда вы увидите номер версии внизу страницы:
Я подозреваю, что причина, по которой вы не можете выбрать Framework v1.1 при добавлении нового пула приложений или изменении существующего, заключается в том, что установщик 1.1 не знает, как добавить какой-либо критический фрагмент метаданных или настроить информацию в IIS.
.NET 2.0 поставляется с 2008 г., а .NET 4.0, являющийся более поздним продуктом, также удобен для IIS7, поэтому, скорее всего, улучшена интеграция с IIS. Или, v1.1 не имеет какого-то существенного слепка метаданных, который InetMgr IIS7 должен иметь, чтобы добавить его в свои различные списки.
Причина, по которой вы можете увидеть v1.1 в выпадающем списке для диалога ASP.NET 1.1 Основные настройки , а не для других пулов, заключается в том, что он уже установлен и будет просто включен в список. Я экспериментировал и изменил это на вновь созданном пуле ASP.NET 1.1 и установил его на 2.0, сохранил, а затем снова открыл. В результате v1.1 больше не отображается.
Кроме того, причина, по которой он называется v1.1, а не .NET Framework v1.1.4322 , заключается в том, что значение выбирается из атрибута managedRuntimeVersion
в конфигурации пула приложений в applicationHost.config
. Причина того, что версии 2.0 и 4.0 показывают полное описание, заключается в том, что, вероятно, есть часть метаданных, дружественных к IIS, с поиском строки ресурса, которая отсутствует для 1.1.
Чтобы установить пул для использования v1.1 во время создания, вы должны вручную установить атрибут managedRuntimeVersion
, используя APPCMD.EXE
:
appcmd add apppool /name:"NewPool" /managedRuntimeVersion:"v1.1"
Это объясняется в нижней части статьи, на которую вы ссылаетесь.
Чтобы изменить существующий пул для использования 1.1, вы также должны использовать командную строку APPCMD.EXE
tool:
appcmd set apppool /apppool.name:"SomeOtherPool" /managedRuntimeVersion:"v1.1"
Интересно, что вы можете установить managedRuntimeVersion
на любое старое значение:
Хотелось бы мне объяснить, почему волшебным образом создается пул приложений ASP.NET 1.1 или как установщику удается правильно делать с отображениями обработчика (каким-то образом все правильные preConditions
установлены, так что либо установщик имеет был обновлен или IIS имеет какой-то триггер, чтобы искать 1.1 и устанавливать вещи).
Обновление:
Я связался с Биллом Стейплсом, автором этой статьи:
Как установить ASP.NET 1.1 с IIS7 в Vista и Windows 2008
Я спросил его о том, как установщику 1.1 или IIS7 удается правильно выполнять сопоставления обработчиков, создавать пул приложений "ASP.NET 1.1" и так далее. Это был его ответ:
"Если память служит, в Vista / Windows 2008 был создан раздел совместимости приложений, который обнаружит установщик 1.1 и выполнит сопоставление создания / обработки пула приложений.
Однако в Windows 7 / Windows Server 2008 R2 .NET Framework 1.1 больше не поддерживается, и я не удивлюсь, если этот код был извлечен, хотя я точно не знаю. "
Так загадка раскрыта.