作者 :Tobin Titus
ApplicationHost.config 是使用 IIS 7 及更高版本时配置系统的根文件。 它包括所有站点、应用程序、虚拟目录和应用程序池的定义,以及 web 服务器设置的全局默认值, (类似于 machine.config,以及.NET Framework设置) 的根 web.config。
这也是一个特殊之处,因为它是安装 Web 服务器时唯一可用的 IIS 配置文件 (但是,如果用户想要) ,仍可以添加 web.config 文件。 它包括一个特殊部分 (名为 configSections) ,用于注册所有 IIS 和 Windows 激活系统 (WAS) 节 (machine.config 对) .NET Framework节具有相同的概念。 它具有将大多数 IIS 节锁定到全局级别的定义,因此默认情况下,层次结构中的较低级别 web.config 文件无法覆盖它们。
文件的位置当前位于 system32inetsrv 目录中,但应在 beta2 之后更改为 system32inetsrvconfig。本文档按它们在文件中出现的顺序遍历所有部分,并逐个解释它们。 最复杂的部分是 <system.webServer>,因此建议读者不要特别跳过该部分。
如前所述,本文档包含每个部分的架构信息片段,以便读者可以发现哪些属性可用,以及它们的默认值和有效范围。 代码片段直接取自 IIS 设置的配置架构文件: 。 本部分介绍如何读取架构信息。
每个配置节的架构在 XML 素中定义。 没有节组的架构定义。 此处使用以下格式来说明如何读取架构:
是配置属性的名称,如 XML 中所示。 每个属性都必须有一个名称。
如果 XML 中没有为 属性指定其他值,则为默认情况下使用的值。 并非所有属性都具有默认值 (例如,网站名称) 。 在这种情况下,语法将为“”。
包含多个项:
- 属性的运行时类型。 这是“bool”、“enum”、“flags”、“int”、“int64”、“String”、“timeSpan”之一。 每个属性都必须具有 类型。
- “bool”为“true”或“false”。
- “enum”是一组可能的值,其中只能为属性设置其中一个值。 每个此类值都有一个数值和一个友好名称。 语法使用字符“|”作为友好名称之间的分隔符:value1|value2|...|valueN。
- “flags”类似于“enum”,只不过允许值组合。 因此,数值应为 2 的倍数,以便它们可以一起进行 ORed 以形成组合。 语法与“enum”相同: value1|value2|...|valueN。
- “int”是 32 位整数。
- “int64”是 64 位整数。
- “String”是字符串。
- “timeSpan”是时间单位的表示形式,类似于托管代码类型 TimeSpan。 它可以持久保存为数字 (表示秒或分钟) ;或 为格式为“[dd:]hh:mm:ss”格式的字符串。 “[dd:]”素表示可选的天数。 其他素分别表示小时数、分钟数和秒数。 “timeSpanFormat”属性指定应使用的格式:秒数、分钟数或格式化字符串。
- 所需属性标记为“必需”。 这意味着必须在 XML 中设置它们的值。 例如,站点名称是必需属性 (每个站点都必须在 IIS) 中具有一个名称。
是特性的简短说明。
<sectionSchema> XML 素是架构信息的基本单位。 所有其他架构信息都在其中指定。 它直接在 (“name”) 中具有一个属性,然后架构的其余部分位于其中的子素中。
每个属性在架构中的相应 XML 素中定义。 如果属性位于<节范围 () ,则素可能直接位于 sectionSchema> 素中;如果属性位于节) 内的子素中,则素位于素 (;<如果属性位于节) 内的集合中,则素可能位于集合>素 (中。
属性架构必须为特性指定名称和运行时类型。 它可能会将属性标记为必需。 如果集合内) ,它可能会将属性标记为唯一键 (,或者作为集合键的一部分 (与其他属性一起) 。 它可以指定属性的默认值。 它可以将 属性标记为磁盘上的自动加密。 它可以指定是否允许单词“Infinite”作为属性的值, (仅针对数字类型(如 int 和 in64)以及 timeSpan) 。 它可以为时间跨度属性指定时间跨度格式 (秒、分钟或格式化字符串) 。 它可以指定属性的验证规则 (请参阅本文档) 下面的属性验证部分。
每个素在架构中的相应 XML 素中定义。 素可以嵌套。 素只是其他属性或子素的容器。 它必须具有名称,并且可以充当集合素默认值的容器 (例如,siteDefaults 保留集合) 中的 网站的默认值。
每个集合在架构中的相应 <集合> XML 素中定义。 集合包含多个素,可以单独添加和删除这些素。 通常,集合指令名称为“add”、“remove”和“clear”,但为清楚起见,某些集合使用不同的名称 (例如,集合使用“site”而不是“add”) 。 这是通过在集合架构中指定 addElement、removeElement 和 clearElement 的值来完成的。 如果架构中缺少集合指令,则集合将不支持它。 集合架构可以指定默认素的名称,该名称将用作集合素默认值的容器, (这将补充素架构) 中的 isCollectionDefault。
例如,集合使用 siteDefaults 作为默认素。 大多数集合在将配置文件合并到命名空间中时会追加素,但有些集合可能会在架构中指定 mergeAppend=“false”,以具有预先添加的行为。 例如,考虑两个级别的配置:站点中的 applicationHost.config 和 web.config。
在 web.config:
如果集合追加,则其合并 (站点级别的有效) 配置将为:
但是,如果它在前面添加,它将是:
某些集合可能在其架构中指定 allowDuplicates=“true”来允许重复条目。 这主要是为了支持 .NET Framework 中的旧集合 (machine.config) 。
某些集合可能允许其中的其他属性,超出架构中指定的属性。 这是通过在架构中指定 allowUnrecognizedAttributes=“true”来完成的。 它主要是为了在 .NET Framework 中支持基于提供程序的集合。
“enum”类型的每个属性都必须在架构中为其枚举值定义相应的 <枚举> XML 素。 每个值都必须具有友好名称和数值。
“flags”类型的每个属性都必须在架构中的相应 XML 素中定义其标志值。 每个标志必须有一个友好名称和一个数字值,该值可以与其他值一起进行 ORed,以形成组合;因此,它应为 2 的倍数。
在分析 XML 以从文件获取节时,以及调用配置 API 来设置值时,将执行属性验证。 如果验证失败,则 (获取 节或设置无效值) ,将无法执行所需的操作。
每个属性都可以为其值关联一个验证程序。 这是通过在 validationType 中指定适当的验证程序名称,并在属性架构的 validationParameter 中指定其他参数来完成的。
系统支持以下验证程序:
- 此验证程序在以下字符上失败: |<>& / [] +=;:,?* @ ”
- validationType=“applicationPoolName”
validationParameter=“”
- 如果值超出 [inside] 范围(以整数为单位),则此验证程序失败。
- validationType=“integerRange”
validationParameter=“<minimum,maximum>><[,exclude]”
- 如果未设置字符串值,则此验证程序将失败。
- validationType=“nonEmptyString”
validationParameter=“”
- 此验证程序在以下字符上失败: /.?
- validationType=“siteName”
validationParameter=“”
- 如果值超出 [inside] 范围(以秒为单位),则此验证程序失败。
- validationType=“timeSpanRange”
validationParameter=“<minimum,maximum,granularity>>><<[,exclude]”
- 如果在值的开头或末尾设置了空格,则此验证程序将失败。
- validationType=“requireTrimmedString”
validationParameter=“”
这是文件中的第一部分。 它包含文件中所有其他部分的列表。 这是部分的注册点 (例如,若要从系统取消注册节,请从此节中删除其行 - 无需从 configschema 目录) 中删除其架构文件。
请注意,其他配置文件的顶部可能也有一个节。 这对于在低于全局级别的级别注册节可能很有用。 这些部分将仅针对命名空间的该范围进行注册。 Web.config 文件只能向系统添加部分;它们无法重新定义在父级别中注册的分区,并且无法删除 (取消注册) 节。
这些节按其包含节组的层次结构进行结构。 每个分区注册指定节名称;节处理程序的托管代码类型 (此文件中没有任何意义,并且会在 beta2 之后删除 – 它仅由 System.Configuration 使用,因此它仍存在于 machine.config 和 web.config 文件中) ;如果与默认值不同,则为 allowDefinition 级别;和 overrideModeDefault (此属性用于锁定此文件中的大多数 IIS 部分) 。
默认情况下,使用 节中的 overrideModeDefault=“Deny”锁定了大多数 IIS 部分。 建议使用标记解锁分区,如下所示:
上述位置标记仅解锁默认网站的 部分。 若要为所有站点解锁它,请在 applicationHost.config 中指定此项:
这有望让你熟悉新 applicationhost.config 的全新强大结构。若要向下钻取到不同的部分,应查看 位于 中的 IIS 架构。
今天的文章 2025年回环地址配置命令(回环地址配置命令是什么)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/15739.html