在web上以编程方式编辑SslFlags.在IIS站点上配置

本文关键字:配置 IIS 站点 SslFlags 方式 web 编程 编辑 | 更新日期: 2023-09-27 18:13:11

在IIS上,我有一个我希望编辑SslFlags的网站。

我想在web中设置这些标志。

在站点级别使用applicationHost.config代替applicationHost.config。

我通过在web中声明访问部分,设法使IIS的UI按照预期的方式运行。并允许通过编辑applicationHost来覆盖访问节。使用以下元素配置:

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

通过UI编辑SslFlags将编辑web。按预期配置文件。该节不被锁定,并考虑被覆盖的值。

但是,当使用Microsoft.Web.Administration程序集通过以下代码读取和编辑这些标志时,所考虑的值是applicationHost的值。在阅读和编辑时配置。

在第一个示例中,我使用GetWebConfiguration来获取配置。

var serverManager = ServerManager.OpenRemote(serverName);
// Try with GetWebConfiguration
Configuration config = serverManager.GetWebConfiguration(sitename);
ConfigurationSection accessSection = config.GetSection(
                                             "system.webServer/security/access",
                                             sitename);

同样适用于使用GetApplicationHostConfiguration检索配置:

config = serverManager.GetApplicationHostConfiguration();            
accessSection = config.GetSection(
                        "system.webServer/security/access",
                        sitename);

我觉得我在这里错过了一些明显的东西,但我似乎无法访问Web中的SslFlags的值。配置,我怎么才能做到这一点?

在web上以编程方式编辑SslFlags.在IIS站点上配置

我建议的第一件事是只对你想要允许覆盖这些值的特定网站或应用程序解锁部分。为此,你可以很容易地使用AppCmd.exe,例如:

C:'Windows'System32'inetsrv'appcmd.exe unlock config "Default Web Site/" /section:system.webServer/security/access -commit:apphost

一旦你这样做了,那么你可以使用以下代码:

using(ServerManager serverManager = new ServerManager()) { 
    Configuration config = serverManager.GetWebConfiguration("Default Web Site");
    ConfigurationSection accessSection = config.GetSection("system.webServer/security/access");
    accessSection["sslFlags"] = @"SslRequireCert";
    serverManager.CommitChanges();
}