IIS를 직접 제어해서 WebSite를 구성해주는 Setup 파일이라던지, 아니면 자신의 요구대로 IIS의 설정을 변경할 수 있는 방법을 제공
참고 :
http://www.iis.net/ConfigReferenceMicrosoft.Web.Administration를 사용하면 IIS 7.0에서부터 사용되는 모든 설정의 Config를 변경시킬 수 있다. 기본적으로 복사되는 Machine.config의 세부 설정을 변경시켜줄 수 있게 된다. 간단히 Wrapping시킨 IisSite class의 코드는 다음과 같다.
public class IisSite
{
public string SiteName { get; private set; }
public string LastErrorMessage { get; private set; }
public IisSite(string siteName)
{
SiteName = siteName;
}
public bool AddApplication(string applicationPool, string applicationName, string path)
{
try
{
using (ServerManager mgr = new ServerManager())
{
Site site = mgr.Sites[SiteName];
if (site != null)
{
string appName;
if(applicationName.StartsWith("/"))
{
appName = applicationName;
}
else
{
appName = "/" + applicationName;
}
site.Applications.Add(appName, path);
Application app = site.Applications[appName];
app.ApplicationPoolName = applicationPool;
mgr.CommitChanges();
}
return true;
}
}
catch(Exception ex)
{
LastErrorMessage = ex.StackTrace;
return false;
}
}
public bool SetAuthicationForAnonymous(string applicationName, bool enable)
{
return SetAuthicationEnable(applicationName, IisConfigConstant.AnonymousAuth, enable);
}
public bool SetAuthicationForBasic(string applicationName, bool enable)
{
return SetAuthicationEnable(applicationName, IisConfigConstant.BasicAuth, enable);
}
private bool SetAuthicationEnable(string applicationName, string authType, bool enable)
{
try
{
string appPath = string.Format("{0}/{1}", SiteName, applicationName);
using (ServerManager mgr = new ServerManager())
{
Configuration config = mgr.GetApplicationHostConfiguration();
ConfigurationSection basicAuthenticationSection = config.GetSection(authType, appPath);
basicAuthenticationSection[IisConfigConstant.Enabled] = enable;
mgr.CommitChanges();
return true;
}
}
catch(Exception ex)
{
LastErrorMessage = ex.Message;
return false;
}
}
public bool SetDefaultDomainForBasic(string applicationName, string defaultDomain)
{
return SetAuthDefaultDomain(applicationName, IisConfigConstant.BasicAuth, defaultDomain);
}
private bool SetAuthDefaultDomain(string applicationName, string authType, string defaultDomainName)
{
try
{
using (ServerManager mgr = new ServerManager())
{
string appPath = string.Format("{0}/{1}", SiteName, applicationName);
//NOTE : Set Auth
Configuration config = mgr.GetApplicationHostConfiguration();
ConfigurationSection basicAuthenticationSection = config.GetSection(authType, appPath);
basicAuthenticationSection[IisConfigConstant.DefaultDomain] = defaultDomainName;
mgr.CommitChanges();
return true;
}
}
catch(Exception ex)
{
LastErrorMessage = ex.Message;
return false;
}
}



