machine.config&中的machineKey属性web.config中。它们是组合还是重写?

时间:2016-03-07 12:40:51

标签: asp.net iis web-config iis-7.5 machine.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"/> 

1 个答案:

答案 0 :(得分:0)

子目录中的设置将覆盖或修改父目录中的设置。例如让我们举例说明处理程序或模块。在父目录中,如果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>

然后,可用于子目录的有效处理程序将是两个配置的并集。所以基本上在子目录中修改配置。如果你添加&lt;清晰/&GT;在&lt;之后标记HttpHandlers的&GT;在子目录的配置文件中标记然后它将覆盖父配置,并且只有子配置文件中的一个处理程序可用于子目录。

现在让我们来看第二个例子。考虑有问题的配置。在这种情况下,由于我们在子配置文件中重新声明/配置相同的设置,它将覆盖父配置设置,并且有效配置将是子配置文件中的任何设置。即。

<machineKey decryption="SHA1"/>

您可以通过此链接更深入地了解配置的工作原理。 http://weblogs.asp.net/jongalloway/10-things-asp-net-developers-should-know-about-web-config-inheritance-and-overrides