为什么ASPNET_RegIIS无法加密web.config的applicationSettings等配置节点?
问题根因分析
aspnet_regiis.exe仅支持加密独立配置节(section),无法直接加密配置节组(sectionGroup)、节点容器或配置定义节点,这是你遇到绝大多数加密失败的核心原因。
常见节点加密失败的具体原因
你测试的各个节点对应的情况如下:
<applicationSettings>:默认是配置节组,不是独立配置节。在configSections中它的定义结构如下:
<configSections> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <!-- 这里才是真正的独立配置节,名称为你项目的命名空间+配置类名 --> <section name="MyWebApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </sectionGroup> </configSections>
你直接传applicationSettings作为参数,工具会查找同名的独立配置节,自然提示找不到。需要传入完整的节路径,比如示例中的applicationSettings/MyWebApp.Properties.Settings即可正常加密。
2. <configSections>:本身是配置系统的根定义节点,不属于可加密的配置节范畴,无法加密。
3. <system.web>、<runtime>:均为默认的配置节组,不是独立配置节,需要指定到组下的具体子节才能加密,比如system.web/authentication、system.web/authorization。
4. <appSettings>、<connectionStrings>、<system.codedom>:本身就是定义在根级的独立配置节,所以直接传名称即可正常加密。
自定义节点可加密的原因
你创建的随机名称节点<applicationSettingsConax>,在configSections中是被直接定义为独立配置节,不是配置节组,符合加密要求,所以可以正常加密。
注意:你当前使用的
-pef参数,正确的加密命令格式为:aspnet_regiis.exe -pef "完整配置节路径" 配置文件所在目录以加密上述示例中的applicationSettings下的配置节为例,命令为:
aspnet_regiis.exe -pef "applicationSettings/MyWebApp.Properties.Settings" .
内容的提问来源于stack exchange,提问作者Conax
相关产品推荐
相关产品推荐

