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

Могу ли я запускать приложения .NET4 на веб-сайте .NET3.5?

У меня есть очень большое и сложное веб-приложение, работающее под .NET 3.5, с некоторыми классическими страницами ASP и компонентами VBScript, добавленными для хорошей меры. Сайт работает на IIS7, и является корневым веб-сайтом.

В идеале я бы хотел иметь под этим веб-сайтом суб-приложение, работающее под управлением .NET 4, для развертывания новых компонентов. Однако это вызывает у меня трудности, и появляется следующая ошибка:

Значение атрибута compilerVersion в параметрах поставщика должно быть v4.0 или более поздней версии, если вы компилируете для версии 4.0 или более поздней версии .NET Framework. Чтобы скомпилировать это веб-приложение для .NET Framework версии 3.5 или более ранней, удалите атрибут targetFramework из элемента файла Web.config.

Это будет возможно вообще, или я должен сдаться и найти другой способ?

Это возможно.

Конечно, вам необходимо, чтобы на веб-сервере были установлены обе платформы; затем вам нужно будет настроить корень сайта для запуска с использованием платформы 3.5, а папку (или виртуальный каталог), в которой находится ваше суб-приложение, для запуска с использованием 4.0. Вам потребуется как минимум два пула приложений, один для версии 3.5, а другой - для 4.0; вы можете использовать стандартные (они создаются автоматически при регистрации фреймворков в IIS) или создавать собственные, это зависит от конфигурации сервера.

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

Да, вам придется настроить это вспомогательное приложение для работы с другим пулом приложений. Вы можете создать еще один для работы с .NET 4.

Эти статьи должны быть полезны с описанием того, как это сделать:

Вы можете (возможно, должны) также обновить весь сайт до .NET 4. Практически все должно быть обратно совместимо.

Я заработал, удалив [targetFramework="4.0"] из [compilation] узел.

VS 2010, MVC 4 -> .net 4.0, IIS 5.

По-прежнему есть проблемы с маршрутизацией, но по крайней мере страница по умолчанию работает.