3

我有一个具有此配置的 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"/> 
4

1 回答 1

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>

然后可用于子目录的有效处理程序将是两个配置的联合。所以基本上配置是在子目录中修改的。如果您在子目录的配置文件中的 < httpHandlers> 标记之后添加 <clear/> 标记,那么它将覆盖父目录的配置,并且只有一个位于子目录配置文件中的处理程序可用于子目录。

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

<machineKey decryption="SHA1"/>

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

于 2016-03-07T16:00:08.233 回答