以编程方式更改IIS网站的SSL设置

时间:2018-03-29 16:18:04

标签: c# ssl iis

如何使用c#以编程方式更改IIS中默认网站的SSL设置功能以要求SSl?我知道要使用Microsoft.Web.Administration的服务器管理器,但我不知道如何编辑功能,或者如果可以的话。

编辑:我不是要更改应用程序设置,而是访问“SSL设置”功能。我可以访问设置并将启用的协议更改为https,但这不会做任何事情,因为在IIS中,https也会启用http,反之亦然。为了只接受https请求,我需要访问SSL设置并将其更改为要求ssl。

1 个答案:

答案 0 :(得分:1)

您需要按照this answer中的说明从您的应用程序中引用程序集Microsoft.Web.Administration

然后您可以使用以下代码:

// Default website always has id 1
int defaultSiteId = 1;

// Get Server Manager
ServerManager serverManager = new ServerManager();

// Get default website (Always has id 1)
var defaultSite = serverManager.Sites.First(s => s.Id == defaultSiteId);

// Get reference to config file where host configuration is stored
Configuration config = serverManager.GetApplicationHostConfiguration();

// Get reference to the section that has the SSL settings for the website
ConfigurationSection accessSection = config.GetSection("system.webServer/security/access", defaultSite.Name);

// Change the sslFlags to require ssl
// (See here for reference: https://docs.microsoft.com/en-us/iis/configuration/system.webServer/security/access )
accessSection.SetAttributeValue("sslFlags", "Ssl");

// Save and apply the changes
serverManager.CommitChanges();

https://docs.microsoft.com/en-us/iis/configuration/system.webServer/security/access

中描述了sslFlags属性的可能值