asp.net - machine.config 和 web.config 中的 machineKey 属性。它们是合并的还是被覆盖的?

标签 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"/> 

最佳答案

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

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

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

<machineKey decryption="SHA1"/>

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

关于asp.net - machine.config 和 web.config 中的 machineKey 属性。它们是合并的还是被覆盖的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844027/

相关文章:

asp.net - 在 ASP.MVC 的部分和 View 上使用 JavaScript 的最佳实践?

ASP.NET - 括号中的负数

WCF - 使用 SSL 的加密(可能还有身份验证)

c# - Asp.net 核心 2.0 与 Entity Framework 数据库首先方法与 MYSQL

asp.net - 数据库或文件中的配置值?

javascript - IISNode 站点列出文件夹而不是启动 server.js

asp.net - Server2Go 就像 ASP.NET 一样,是一个可移植 ASP.NET 服务器

iis - 如何更改生成 IIS 中虚拟目录的 web.config 的位置?

asp.net - 查找同一列的行之间的差异(时间数据之间的差异)

iis - 如何覆盖 Web API 中的所有标准错误页面