为什么appcmd.exe不允许设置ipSecurity allowUnlisted?

Why appcmd.exe does not allow to set ipSecurity allowUnlisted?

我想使用 PowerShell 对我网站上的 /admin 文件夹设置 ip 限制。

我明白,因为这个部分被锁定,我必须去 applicationHost.config,除非我解锁,否则我不能在那个特定文件夹中使用本地 web.config。 我还想出了如何使用 appcmd.exe.

添加 IP 限制规则

因为allowUnlisted默认为true(允许),我也必须设置为false,我无法完成,因为当我使用以下命令时出现错误:

$location = "My Site/admin"
appcmd.exe set config $location -section:system.webServer/security/ipSecurity /allowUnlisted:false

ERROR ( message:Can not set attribute "allowUnlisted" to value "false".. Reason: This configuration section cannot be used at this path. This happens when the section is locked at a parent level.

我还发现有 appcmd lock/unlock 工具,但这些命令不允许特定位置。我不想改变任何期望我的 $locations 行为,并在 applicationHost.config.

中执行此操作

使用 GUI完全有可能,在 IIS 管理器中,在编辑功能中对我的特定管理文件夹使用 IP 限制,我可以将其设置为拒绝,这会增加applicationHost.config 以下行的结尾(无其他更改):

<location path="My Site/admin">
    <system.webServer>
        <security>
            <ipSecurity allowUnlisted="false">
                <add ipAddress="127.0.0.1" allowed="true" />
            </ipSecurity>
        </security>
    </system.webServer>
</location>

问题

如何使用 CLI 方式在 applicationHost.config 中进行此更改?

我不太了解appcmd.exe的使用。但是,如果您想使用 powerShell WebAdministration 模块,则可以使用以下内容:

$location = "My Site/Admin"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location $location -filter "system.webServer/security/ipSecurity" -name "allowUnlisted" -value "False"

添加/提交:

.\appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /allowUnlisted:'false'  /commit:apphost

如果您想使用 appcmd