Могу ли я разместить виртуальный каталог .net 2.0 на сайте asp.net 4.0?

У нас не было проблем с запуском виртуальных каталогов .NET 4.0 на веб-сайтах 2.0, но обратный способ дает нам некоторые проблемы. Это понятно, но есть ли способ обойти эту проблему? Они работают с разными пулами приложений ... можем ли мы сделать так, чтобы виртуальный каталог пропустил web.config веб-сайта и сразу перешел к machine.config?

Получаем следующую ошибку:

Parser Error Message: Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive.

Source Error: 

Line 22:   </appSettings>
Line 23:   <system.web>
Line 24:     <compilation debug="true" targetFramework="4.0" />
Line 25:     <customErrors defaultRedirect="url" mode="RemoteOnly">
Line 26:       <error statusCode="404" redirect="~/404.aspx"/>

person Merritt    schedule 12.08.2010    source источник
comment
возможный дубликат Возможно ли чтобы полностью отменить более высокий web.config в подпапке?   -  person Merritt    schedule 12.08.2010


Ответы (3)


Добавьте следующее в свой корневой файл web.config

<location path="." inheritInChildApplications="false"> 
person Ben Robinson    schedule 12.08.2010
comment
Как я отметил в своем ответе, директиву <location> нельзя использовать для переопределения <configSections>. Перевод: к сожалению, это не сработает во всех сценариях. - person Josh; 10.06.2014

Можно ли полностью отрицать более высокий web.config в подпапке?

В корневом файле web.config:

  <location path="." inheritInChildApplications="false">
    <system.web>      
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
  </location>

(Бен дошел до этого первым, но я оставлю этот ответ, поскольку он указывает на несколько альтернатив)

person ScottE    schedule 12.08.2010
comment
Спасибо за ответ и уведомление о дублировании. - person Merritt; 12.08.2010

Это проблема наследования web.config, и вы не можете решить все проблемы с помощью директивы <location>.

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

Короче говоря, наш корневой веб-сайт - это ASP.NET 3.5 (это версия 2.0 с добавленными конкретными библиотеками), и у нас есть вспомогательное приложение, которое является ASP.NET 4.0.

Наследование web.config заставляет суб-приложение ASP.NET 4.0 наследовать файл web.config родительского приложения ASP.NET 3.5.

Однако глобальный (или «корневой») файл web.config приложения ASP.NET 4.0, который находится в C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config и C: \ Windows \ Microsoft. NET \ Framework64 \ v4.0.30319 \ Config \ web.config (в зависимости от вашей разрядности) уже содержит разделы конфигурации, которые присутствуют в специфичном для приложения web.config приложения .NET 3.5.

Затем приложение ASP.NET 4.0 пытается объединить вместе корневой ASP.NET 4.0 web.config и родительский web.config (тот, который для приложения ASP.NET 3.5) и запускает дубликаты в узле <configSections>.

Директиву <location> нельзя использовать для предотвращения наследования записей <configSections>. Единственное решение, которое мне удалось найти, - это удалить configSections из родительского файла web.config, а затем либо

  1. Определите, что они вам не нужны в корневом приложении, или
  2. Обновите родительское приложение до ASP.NET 4.0 (чтобы оно получило доступ к корневым разделам конфигурации web.config)
person Josh    schedule 08.01.2013