DevOps

[c#] IIS config 변경

no500 2022. 3. 31. 11:42

개요

IIS Rewrite 설정을 동적으로 변경

public void Set()
{
    ServerManager serverManager = new ServerManager(@"%windir%\system32\inetsrv\config\applicationhost.config");
    SiteCollection sites = serverManager.Sites;
    List<Site> proxySites = sites.Where(x => x.Name.Contains("proxy")).ToList();

    Configuration config = proxySites[0].GetWebConfiguration();
    ConfigurationSection rulesSection = config.GetSection("system.webServer/rewrite/rules");
    ConfigurationElementCollection rulesCollection = rulesSection.GetCollection();

    foreach (var r in rulesCollection)
    {
        foreach (var c in r.ChildElements)
        {
            foreach (var a in c.Attributes)
            {
                if (c.ElementTagName == "action")
                {
                    if (a.Name == "url")
                    {
                        a.Value = "http://site1.com/{R:0}";
                    }
                }
            }
        }
    }

    serverManager.CommitChanges();
}