我有一个带有此配置的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"/>
答案 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