Последние несколько дней я пытался перенести довольно большое веб-приложение с IIS6 на IIS7, но каждый раз, когда кажется, что мы почти закончили, IIS7 не может загрузить страницы aspx.
Приложение представляет собой веб-приложение .net 3.5, активно использующее рефлексию и веб-сервисы. Мы используем 2 основных компонента (каждый со своим веб-сайтом в IIS7, хотя они совместно используют пул приложений): веб-интерфейс (страницы aspx) и webAPI (страницы asmx).
Часть webAPI работает отлично (насколько мы можем судить; есть несколько вещей, которые мы не можем протестировать из браузера), и страницы веб-интерфейса просто отлично загружают статические страницы HTM. Проблема в том, что как только мы пытаемся просмотреть страницу aspx (любую страницу aspx), все это просто останавливается; ошибка не регистрируется в программе просмотра событий, пока через несколько минут мы не получим предупреждение IIS 5010 (рабочий процесс игнорирует пинг).
Мы попытались перенести приложение двумя различными способами:
- Вручную: мы переместили все необходимые файлы и создали виртуальные каталоги, а затем преобразовали их в веб-сайты. Результат: рабочий процесс занял 100% одного ядра и вращался вечно (до тех пор, пока не был остановлен вручную)
- Автоматически. Используя приложение MSDeploy с сайта www.iis.net, мы заархивировали весь веб-сервер IIS6 и распаковали его в пустую установку IIS7. Нам пришлось отключить Forms Auth, чтобы избавиться от ошибки 401.2, но после этого результат был таким, что компонент webAPI по-прежнему работает просто отлично, но вместо рабочего процесса веб-интерфейса, занимающего 100% одного ядра, он вырос примерно до трети требуемой памяти, затем зависал, ничего не делая.
В любом случае, то, что произошло с точки зрения пользователя, было таким же.
К сожалению, мы даже не можем подключить отладчик к рабочему процессу, потому что он, похоже, не загружает управляемый код.
подробности:
- .net framework: v3.5
- CLR версия: v2.0
- Режим авторизации IIS: анонимный
- ОС arch: x64
- Арка приложения: x86
- Бывает как с классическими, так и с интегрированными трубопроводами
Примечания:
- Кажется, что новые веб-проекты прекрасно работают в IIS7, и, конечно же, веб-службы xml также хороши
- временные библиотеки DLL создаются и хранятся во временной папке DLL ASP.NET, хотя рабочий процесс никогда не содержит управляемого кода.
- Новые страницы, добавленные в проект веб-интерфейса, также показывают то же поведение (не мешало попробовать)
Обновление:
- Мы сузили проблему до одной сборки. Это обертка для стороннего веб-контроля. Я собираюсь заменить его, посмотрим, исправит ли это проблему.