.NET Framework 1.1 на IIS 7 - PullRequest
       45

.NET Framework 1.1 на IIS 7

6 голосов
/ 21 декабря 2010

Я унаследовал веб-сайт .NET Framework 1.1, который я должен разместить на IIS 7 в Windows Server 2008. У меня возникли некоторые проблемы.

1.Установка

Я установил .NET Framework 1.1, следуя этим инструкциям .

При установке автоматически был создан новый пул приложений "ASP.NET 1.1".Я использую это.

2.Проблема

Когда я запускаю веб-сайт, я вижу ошибки времени выполнения web.config:

Тег содержит недопустимое значение для атрибута "culture".

Я исправляю это, а затем вижу:

Дочерние узлы не разрешены.

Я не хочу продолжать играть в эту игру со взломом. Что-то должно быть не так.

3.Я уверен, что это .NET 1.1?

Я проверяю автоматически созданный пул приложений.Я вижу, что это 1.1.

Расширенные настройки ...

Automatic AppPool .NET 1.1 Advanced

Основные настройки ...

Automatic AppPool .NET 1.1 Basic

Это кажется неправильным.

Пока установлен 1.1, в выпадающих селекторах Advanced это не вариант.

И почему в поле Basic это просто "v1.1"а не" .NET Framework v1.1.4322 "?Это было бы более последовательным.

4.Я не могу создать другие пулы приложений .NET 1.1

Я не могу выбрать .NET Framework 1.1 для других пулов приложений.Это не вариант в выпадающих селекторах.Что с этим?

App Pool missing .NET 1.1 option

Что теперь?

  • Почему v1.1 не подходит для всех AppPools?
  • Как я могу убедиться, что мое приложение на самом деле использует .NET Framework 1.1?
  • Почему я могу получить эти ошибки во время выполнения?

Ответы [ 3 ]

7 голосов
/ 23 декабря 2010

Быстрый способ выяснить, работает ли приложение под версией 1.1, - запустить быстрый скрипт, отображающий версию среды:

<%@ Page Language="C#" %>
<script runat="server">
    void Page_Load(Object sender, EventArgs e)
    {
        Response.Write(System.Environment.Version.ToString());       
    }
</script>

Или, если вы получаете желтые экраны смерти, тогда вы увидите номер версии внизу страницы: alt text

Я подозреваю, что причина, по которой вы не можете выбрать 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 на любое старое значение:

alt text

Хотелось бы мне объяснить, почему волшебным образом создается пул приложений 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 больше не поддерживается, и я не удивлюсь, если этот код был извлечен, хотя я точно не знаю. "

Так загадка раскрыта.

2 голосов
/ 22 декабря 2010

Я столкнулся с такими же проблемами при попытке установить старую .Net 1.1. на Win2k8 / IIS7. В конце концов, я обнаружил, что проще и быстрее просто перевести все на .Net 2.0. Я бы порекомендовал вам сделать то же самое.

Если ваш код не делает ничего экзотического, процесс переноса может быть выполнен за день или меньше для достаточно крупных проектов.

1 голос
/ 23 декабря 2010

Windows 2008 не имеет установленного .NET 1.1.Вы можете установить вручную .NET 1.1 .

...