machine.config和web.config中的machineKey属性,它们是合并还是覆盖?

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"/> 
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/>标记,则会覆盖父级的配置,并且仅一个出现在子目录的配置文件中的处理程序可用于子目录。

现在让我们看第二个例子。考虑所讨论的配置。在这种情况下,由于我们正在重新声明/配置子级配置文件中的相同设置,它将覆盖父级的配置设置,有效配置将是子级配置文件中存在的任何内容。即。

<machineKey decryption="SHA1"/>

您可以从此链接中获取有关配置工作原理的更多见解。 http://weblogs.asp.net/jongalloway/10-things-asp-net-developers-should-know-about-web-config-inheritance-and-overrides


这是一种将它们组合起来的方法吗?<machineKey compatibilityMode="Framework20SP2" validationKey="123" decryptionKey="456" validation="SHA1" decryption="SHA1"/> - X.Otano
在这种情况下无法进行合并。如果您需要按照评论中发布的方式进行,则可以在子Web.config文件中声明所需的方式。 - Pankaj Kapare
我不知道为什么,但在我的测试中,我得到了两者的组合,你知道发生了什么吗? - X.Otano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接