从 ApplicationHost.config 和 web.config 应用 IIS 设置的顺序是什么

从 ApplicationHost.config 和 web.config 应用 IIS 设置的顺序是什么

如果我在 ApplicationHost.config 和 web.config 中都配置了 IIS 设置,那么将应用什么值?它是 ApplicationHost.config 值(因为它对所有网站都是全局的)还是 web.config 值(因为它会覆盖它)?如果我没有在 web.config 中配置它,会发生什么情况?它应该从 ApplicationHost.config 中获取此设置吗?

我必须检查的具体设置是: system.webServer/security/requestFiltering/requestLimits/maxAllowedContentLength

我之所以问这个问题,是因为当我尝试从 C# 应用程序配置这些设置时,我得到了相当奇怪的结果。即使我没有为网站配置它,并且我已在 ApplicationHost.config 中手动设置了值,我仍然会从 web.config 中获取默认值

答案1

配置文件会在您向下移动范围(服务器 -> 站点 -> 应用程序)时继承其值,但默认情况下它仅适用于特定部分。 IIS 站点有一个有关 ApplicationHost.config 的文章文件以及配置委托

例如,requestFilteringapplicationHost.config 中有两个不同的部分:一个用于 FTP 服务器,一个用于网站。您可以看到网站部分(系统)是如何配置的。网络服务器) 允许覆盖值:

<section name="requestFiltering" overrideModeDefault="Allow" />

而系统下的部分。FTP服务器才不是。

<section name="requestFiltering" overrideModeDefault="Deny" />

那么,回到你的问题。你应该能够更新 Web.config 来修改你的站点(和子站点)允许的内容长度,除非你更改了 applicationHost.config 中的 overrideModeDefault 值。

相关内容