Как использовать веб-приложение .NET 4.0 в веб-приложении .NET 3.5? - PullRequest
10 голосов
/ 18 февраля 2011

У моей компании есть веб-сайт, встроенный в ASP.NET и предназначенный для .NET 3.5. Он слишком изуродован и массивен, чтобы своевременно преобразовывать его в .NET 4. Мне поручено построить систему продажи билетов. Я хочу, чтобы эта система продажи билетов была совершенно отдельным приложением от основного приложения. Я добавил каталог на сайт под названием «TicketingSystem», затем в IIS я установил эту папку как приложение, используя пул приложений, предназначенный для .net 4.0. Я предполагал, что это приложение не будет затронуто приложением над ним, тем более что оно использует свой собственный пул приложений, но, похоже, это как-то затронуто. При переходе в этот каталог с моим веб-приложением .net 4 возникает эта ошибка:

http://www.chevtek.com/content/error.jpg

Я рассмотрел конфиденциальную информацию, такую ​​как пути к файлам и прочее, но в строке, где указано, что файл конфигурации имеет путь к файлу конфигурации родительского приложения, а не файл конфигурации приложения .net 4.

Любая информация приветствуется. Разве нельзя вкладывать приложение .net 4.0 в приложение .net 3.5?

РЕДАКТИРОВАТЬ В соответствии с запросом приведен скриншот структуры каталогов IIS.

http://www.chevtek.com/content/IISDirectoryStructure.jpg

Ответы [ 6 ]

12 голосов
/ 19 февраля 2011

Наследование Web.config, к сожалению, нельзя отключить полностью; В частности, верхний раздел в файле web.config, который определяет, какие разделы конфигурации существуют в файле web.config, нельзя игнорировать / переопределять в дочернем приложении.

Решение задокументировано здесь (asp.net 4 документации по критическим изменениям) ; По сути, вам нужно переместить значения, которые в настоящее время находятся в верхнем приложении, в файл конфигурации, специфичный для машины / FrameworkVersion, а затем обернуть все (или, по крайней мере, большинство) вашего корневого web.config в тег местоположения с отключенным наследованием.

1 голос
/ 19 февраля 2011

Пробовали ли вы установить для атрибута "inheritInChildApplications" значение "false" в файле web.config родительской папки?

См. Ответ Солга Долгина на аналогичный вопрос о том, как это сделать..

1 голос
/ 18 февраля 2011

В моих приложениях я более или менее успешно справляюсь с вложенными приложениями, используя элемент <location> вместе с <clear /> и аналогичными элементами в web.config.

Это отрывок из моего файла web.config:

...
<!-- Do not inherit. -->
<location path="." inheritInChildApplications="false">
    <system.web>
        ...

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

0 голосов
/ 18 февраля 2011

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

0 голосов
/ 18 февраля 2011

Предполагая, что ваш текущий сайт использует AppPool1 для .NET 2.0

Создайте AppPool2, настройте его на .NET 4.0 и используйте его в виртуальном каталоге вашего приложения.

0 голосов
/ 18 февраля 2011

Редактировать: как уже упоминалось, первый порт вызова - убедиться, что у каждого приложения есть свой пул приложений.Двойная и тройная проверка этого как сайта .net 3.5 и сайта .net 4 в одном и том же пуле приложений приведет к разрыву всего пула приложений.

Далее попробуйте удалить всю группу разделов сценариев из моего опытаэто решает, и я не заметил никаких проблем

...