.NET Framework 1.1 на IIS 7
я унаследовал веб-сайт .NET Framework 1.1, который я должен разместить с IIS 7 на Windows Server 2008. У меня проблемы.
1. Установка
Я установил .NET Framework 1.1 после эти инструкции.
установка автоматически создала новый пул приложений "ASP.NET 1.1". Я использую это.
2. Беда!--3-->
когда я запускаю веб-сайт, я вижу web.ошибки во время выполнения конфигурации:
тег содержит недопустимое значение атрибута' culture'.
я исправляю это, а затем вижу:
дочерние узлы не допускаются.
Я не хочу продолжать играть в эту игру whack-a-mole. должно быть, что-то не так.
3. Я уверен, что это .NET 1.1?
Я изучаю автоматически созданный пул приложений. Я вижу, что это 1.1.
передовая Настройки...
Основные Настройки...
Это не кажется правильным.
в то время как 1.1 установлен, это не вариант в расширенных выпадающих селекторах.
и почему в базовой коробке это просто " v1.1 "и не" .NET Framework v1.1.4322"? Это было бы более последовательно.
4. Я не могу создать другие пулы приложений .NET 1.1
Я не могу выбрать .NET Framework 1.1 для другого приложения бассейны. Это не вариант в выпадающих селекторах. Что это значит?
что теперь?
- почему не v1.1 вариант для всех AppPools?
- как я могу проверить, что мое приложение на самом деле использует .NET Framework 1.1?
- почему я могу получить эти ошибки выполнения?
3 ответов
быстрый способ узнать, работает ли приложение под 1.1, - это запустить быстрый скрипт, который отображает версию среды:
<%@ Page Language="C#" %>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
Response.Write(System.Environment.Version.ToString());
}
</script>
или если вы получаете желтые экраны смерти, то вы увидите номер версии в нижней части страницы:
Я подозреваю, что причина, по которой Вы не можете выбрать Framework В1.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 больше не видно.
кроме того, почему он называется В1.1, а не .Чистая база В1.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
инструмент:
appcmd set apppool /apppool.name:"SomeOtherPool" /managedRuntimeVersion:"v1.1"
интересно вы можете установить managedRuntimeVersion
к любому старому значению:
Я хотел бы объяснить, почему ASP.NET 1.1 пул приложений волшебным образом создается или как установщику удается делать правильные вещи с сопоставлениями обработчиков (как-то все правильно preConditions
установлены, поэтому либо установщик был обновлен, либо IIS имеет какой-то триггер для поиска 1.1 устанавливается и исправляется вещи.)
обновление:
я связался с Биллом Стейплзом, автором этой статьи:
Я спросил его о том, как установщик 1.1 или IIS7 умудряются делать правильные вещи в отношении сопоставлений обработчиков, создавая "ASP.NET 1.1" пул приложений и так далее. Вот его ответ:--11-->
"если память не изменяет, в Vista / Windows 2008 была создана прокладка совместимости приложений, которая обнаружит установщик 1.1 и выполнит сопоставление создания/обработчика пула приложений. Однако в Windows 7 / Windows Server 2008 R2 .NET framework 1.1 больше не поддерживается, и я бы не удивился, если бы этот код был вытащен, хотя я не знаю наверняка."
так что загадка решена.
Я столкнулся с теми же проблемами при попытке установить старый .Net 1.1. на Win2k8/и IIS7. В конце концов я обнаружил, что проще и быстрее просто поднять все до .Net 2.0. Я бы рекомендовал вам сделать то же самое.
Если ваш код не делает ничего экзотического, процесс переноса может выполняться в день или меньше для достаточно больших проектов.