Атрибуты machineKey в machine.config и web.config. Они объединены или переопределены?

У меня есть machine.config с такой конфигурацией:

<system.web>
     <machineKey compatibilityMode="Framework20SP2" validationKey="123" decryptionKey="456" validation="SHA1" decryption="3DES"/> 

И web.config с этим атрибутом

 <system.web>
     <machineKey decryption="SHA1"/> 

Окончательная конфигурация сочетает в себе и то, и другое?

<machineKey compatibilityMode="Framework20SP2" validationKey="123" decryptionKey="456" validation="SHA1" decryption="SHA1"/> 

или если я переопределил machineKey, он будет полностью переопределен?

 <machineKey decryption="SHA1"/> 

person X.Otano    schedule 07.03.2016    source источник


Ответы (1)


Настройки в дочернем каталоге либо переопределяют, либо изменяют настройки из родительского каталога. например Возьмем пример обработчиков или модулей. В родительском каталоге, если web.config содержит такие обработчики.

<configuration>
  <system.web>
     <httpHandlers>
        <add verb="*" path="SampleHandler.new" type="SampleHandler, SampleHandlerAssembly" />
     </httpHandlers>
  </system.web>
</configuration>

и если дочерний каталог содержит такие обработчики

<configuration>
   <system.web>
     <httpHandlers>
        <add verb="*" path="*.SampleFileExtension" type="SampleHandler2 " />
     </httpHandlers>
   </system.web>
</configuration>

Тогда эффективные обработчики, доступные для дочернего каталога, будут объединением двух конфигураций. Таким образом, конфигурация изменяется здесь, в дочернем каталоге. Если вы добавите тег ‹ clear/> сразу после тега ‹ httpHandlers> в файле конфигурации дочернего каталога, он переопределит конфигурацию родителя, и для дочернего каталога будет доступен только один обработчик, который находится в файле конфигурации дочернего элемента.

Теперь давайте возьмем второй пример. Рассмотрим рассматриваемую конфигурацию. В этом случае, поскольку мы повторно объявляем/настраиваем один и тот же параметр в дочернем файле конфигурации, он переопределяет родительские параметры конфигурации, и эффективной конфигурацией будет то, что есть в дочернем файле конфигурации. то есть

<machineKey decryption="SHA1"/>

Вы можете получить больше информации о том, как работает конфигурация, по этой ссылке. http://weblogs.asp.net/jongalloway/10-things-asp-net-developers-should-know-about-web-config-inheritance-and-overrides

person Pankaj Kapare    schedule 07.03.2016
comment
это способ, чтобы они объединились? ‹machineKey compatibilityMode=Framework20SP2 validationKey=123 decryptionKey=456 validation=SHA1 decryption=SHA1/› - person X.Otano; 08.03.2016
comment
Объединение в данном случае невозможно. Если вам это нужно так, как вы разместили в комментарии, вы можете объявить это так, как хотите, в дочернем файле web.config. - person Pankaj Kapare; 08.03.2016
comment
Я не знаю, почему, но если в моем тестировании я получаю комбинацию обоих, знаете ли вы, что происходит? - person X.Otano; 08.03.2016