Настройки из system.webserver иногда удаляются из файла web.config

Мы столкнулись с довольно неприятной ошибкой в ​​IIS7.5, из-за которой иногда удаляется содержимое тега в web.config. Он не просто удаляет содержимое во время выполнения, он фактически физически обновляет файл.

На наших локальных машинах это происходит, когда мы перестраиваем все (включая замену application.config из системы управления версиями), а на наших серверных машинах это происходит при перезапуске пула приложений. Оба случая носят временный характер.

Кажется, это происходит потому, что у нас есть некоторая конфигурация в корне конфигурации, а часть - в теге местоположения. Причина, по которой мы делаем это, заключается в том, что у нас есть некоторые виртуальные приложения под корневым приложением, и мы не хотим, чтобы они наследовали обработчики и модули. У нас есть корневой тег system.webserver, потому что есть некоторые настройки (например, validateIntegratedModeConfiguration), которые мы хотим унаследовать.

Это влияет только на настройки system.webserver, а не внутри тега местоположения. Если вы переместите все в тег местоположения, это нормально.

Наш web.config выглядит примерно так:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    ...
</system.webServer>
<location path="." inheritInChildApplications="false">
    <system.webServer>
      <modules>
        ...
      </modules>
      <handlers accessPolicy="Read, Script">
        ...
      </handlers>
    </system.webServer>
 </location>

Кто-нибудь еще сталкивался с этой проблемой?


person Helephant    schedule 19.07.2012    source источник
comment
У вас есть трансформации конфигурации?   -  person Paul Fleming    schedule 19.07.2012
comment
Нет. Необычные вещи в конфигурации: настраиваемые разделы конфигурации, конфигурация sitecore, пара разделов, которые включены из отдельного файла через configSource, несколько других тегов местоположения ... это мощный файл конфигурации. :)   -  person Helephant    schedule 19.07.2012


Ответы (1)


В итоге мы переместили конфигурацию из корневого system.webserver в ту, что находится внутри тега location. Затем мы также добавили его во все дочерние приложения.

<location path="." inheritInChildApplications="false">
    <system.webServer>
      <validation validateIntegratedModeConfiguration="false" />
      <modules>
        ...
      </modules>
      <handlers accessPolicy="Read, Script">
        ...
      </handlers>
    </system.webServer>
 </location>

Хотя это не идеальный обходной путь, он решил проблему с удаленной конфигурацией.

person Helephant    schedule 25.07.2012
comment
Спасибо за информацию. Я столкнулся с той же проблемой, но окольным путем. При попытке зашифровать наш web.config он удалял этот же элемент. Есть ли шанс, что вы могли найти альтернативное решение, или это все еще единственное? stackoverflow.com/questions/42256393/ - person Justin Bicknell; 15.02.2017