Прекратить наследование web.config из родительского приложения ASP.NET в IIS 7.5 - PullRequest
11 голосов
/ 31 мая 2011

Мы развернули веб-сайт ASP.NET (приложение 1) в IIS 7.5. Затем под этим приложением создайте другое приложение ASP.NET (Приложение 2). Но в приложении 2 я не хочу наследовать web.config от приложения 1.

Если я попытаюсь сделать следующее в приложении 1, web.config:

<location path="." inheritInChildApplications="false"> 
    <configSections> 

    <!-- etc -->

    </configSections>
</location>

сообщает об ошибке:

Ошибка конфигурации Раздел конфигурации 'configSections' не может быть читать, потому что отсутствует раздел декларация

Если я попытаюсь сделать:

<remove name = "system.web.extensions" /> 

все равно выдает ту же ошибку:

Ответы [ 4 ]

7 голосов
/ 12 июля 2012

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

Решение аналогично этот пост .Сначала установите ARR .Затем настройте свое «дочернее» приложение на веб-сайте, который прослушивает нестандартный порт.Затем настройте правило перезаписи на веб-сайте «родительского» приложения, которое соответствует исходному пути к «дочернему» приложению.Пусть это правило перенаправит запрос на вновь созданный веб-сайт, прослушивающий новый порт.

Я бы опубликовал пример, но я ожидаю, что довольно просто увидеть, как это будет работать, посмотрев сообщение.ссылка выше .

4 голосов
/ 13 августа 2013

Это сработало для меня.

Для тех, кто не смог заставить работать решение с путевым местоположением, вы могли забыть закрыть тег элементов местоположения (если вы только что отредактировали файл web.config в текстовом редакторе насервер).Вот пример:

<configuration>
  <configSections>
 ...
  </configSections>
  <connectionStrings>
 ...
  </connectionStrings>
  <location path="." inheritInChildApplications="false">
  <system.web>
 ...
  </system.web>
 ...
  </location>
</configuration>

Обратите внимание, что configSections и connectionStrings не должны находиться в элементе location, что, вероятно, является причиной того, что попытка OP не сработала.

0 голосов
/ 01 июня 2011

Нельзя обернуть весь элемент конфигурации <configSections> в <location path="." inheritInChildApplications="false">. Это не поддерживается в ASP.NET (пока).

Из документации:

Свойство SectionInformation.InheritInChildApplications

InheritInChildApplications собственность относится только к конфигурация, зависящая от местоположения Настройки.

Также:

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

Элементы

<configSection> являются специальными и не являются настройками конфигурации как таковыми. Они используются для определения обработчиков для настроек конфигурации.

Если вам нужно удалить конфликтующую конфигурацию <section> из дочернего приложения, вы можете сделать это в файле web.config дочернего приложения с элементом <remove>:

remove Элемент для configSections (схема общих настроек)

0 голосов
/ 01 июня 2011

Вы пробовали следующую ссылку:

http://www.kowitz.net/archive/2007/05/16/stopping-asp-net-web-config-inheritance

Я могу ручаться за это, как работающий, как я делал это в прошлом.

...