Назад | Перейти на главную страницу

Почему IIS загружает другую версию среды выполнения .NET, отличную от установленной для пула приложений?

Веб-сайт в IIS настроен на использование пула приложений, который настроен на использование .NET Framework версии 4.0. Этот веб-сайт не может загрузить библиотеки DLL, скомпилированные для 4.0. Страницы на этом веб-сайте, на которых отображается версия платформы (System.Environment.Version) отчет 2.0 загружен.

Почему этот сайт загружает фреймворк 2.0? Как его можно настроить для загрузки фреймворка 4.0?

Пул приложений был переработан.
Другие веб-сайты в этом окне загружают и используют платформу 4.0.

По Microsoft:

"Версия .NET Framework, на которой работает приложение, определяется следующим образом:

«Если версия .NET Framework, для которой было создано приложение, присутствует на компьютере, приложение запускается на этой версии».

Был ли веб-сайт скомпилирован для .NET 2.0?

Чтобы проверить версию платформы и версию CLR, на которую нацелена цель, вы можете использовать служебную программу corflags.exe. Для папки bin, в которой расположены сборки, выполните следующую команду:

for %i in (*.exe,*.dll) do corflags.exe %i  

Помимо прочего, он отобразит версию .NET Framework, на которую нацелена сборка. Обратите внимание, что вы также можете использовать corflags.exe для изменения PE-заголовка сборок для целевой версии .NET 4.0 CLR, но вам, вероятно, лучше перекомпилировать для .NET 4.0 в Visual Studio.

Практическое руководство. Использование файла конфигурации приложения для целевой версии .NET Framework
http://msdn.microsoft.com/en-us/library/9w519wzk.aspx

supportsRuntime Element в app.config
http://msdn.microsoft.com/en-us/library/w4atty68.aspx

https://stackoverflow.com/questions/2961600/app-config-supportedruntime

Информация о Corflags:
https://blogs.msdn.com/b/gauravseth/archive/2006/03/07/545104.aspx
http://msdn.microsoft.com/en-us/library/ms164699%28v=vs.80%29.aspx

Проще говоря, так не работает. Думайте об установке версии пула приложений как об установке среды по умолчанию если никто ничего не просит. Если 2 приложения находятся в пуле приложений, а 1 использует 2.0, а 1 использует 4.0, это зависит от того, кто будет вызван первым, в зависимости от версии платформы, которая работает в этом пуле приложений. Способ, которым администратор может «исправить» это (а вам, вероятно, не следует этого делать, поскольку приложение, скорее всего, было нацелено на 2.0), является установка поддерживаемого времени выполнения в файле application.config (его во время выполнения) см.Элемент <supportedRuntime>

Вы уже проверили <compilation> директива под <system.web> в web.config?