Pre-Requisite

<identity impersonate="true" userName="adminname" password="adminpwd"/>

Create an Object with the name of IIS Object

public class IISObject

{

public long siteId { get; set; }

public string hostName { get; set; }

public string webSiteName { get; set; }

public string portNumber { get; set; }

public string applicationPool { get; set; }

}

Below is the code to add website binding to a Host

public void AddBindings(string sitename,string hostname)

{

ServerManager serverMgr = new ServerManager();

Site mySite = serverMgr.Sites[sitename];

mySite.Bindings.Add("*:80:"+hostname, "http");

// Set auto start to true.

mySite.ServerAutoStart = true;

// Commit the changes

serverMgr.CommitChanges();

}

Below is the code to add website to IIS

void AddWebSite( IISObject iisObject)

{

ServerManager serverMgr = new ServerManager();

string bindinginfo = "*:" + ConfigurationManager.AppSettings["portnumber"] + ":" + iisObject.hostName;

//check if website name already exists in IIS

Boolean bWebsite = IsWebsiteExists(iisObject.webSiteName, serverMgr);

if (!bWebsite)

{

//ConfigurationManager.AppSettings["websitefolder"] is the physical path of the directory

Site mySite = serverMgr.Sites.Add(iisObject.webSiteName, "http", bindinginfo,ConfigurationManager.AppSettings["websitefolder"]);

// name of the application pool, normally can use DefaultAppPool

mySite.ApplicationDefaults.ApplicationPoolName =ConfigurationManager.AppSettings["applicationpool"];

mySite.TraceFailedRequestsLogging.Enabled = true;

string logginDirectory = ConfigurationManager.AppSettings["loggingdirectory"];

mySite.TraceFailedRequestsLogging.Directory = logginDirectory + "\\" + iisObject.webSiteName;

serverMgr.CommitChanges();

}

}

Remove Binding from the Host Name

public void RemoveServerBinding(string hostname,string sitename)

{

ServerManager serverMgr = new ServerManager();

Site mySite = serverMgr.Sites[sitename];

for (int i = 0; i < mySite.Bindings.Count; i++)

{

if (mySite.Bindings[i].Host == hostname)

{

mySite.Bindings.RemoveAt(i);

break;

}

}

mySite.ServerAutoStart = true;

}

Remove Website from IIS

public void RemoveIISWebsite(string sitename)

{

ServerManager serverMgr = new ServerManager();

Site site = serverMgr.Sites[sitename]; // you can pass the site name or the site ID

//check site exists or not

bool blnSuccess = false;

blnSuccess = IsWebsiteExists(sitename, serverMgr);

if (blnSuccess)

{

serverMgr.Sites.Remove(site);

serverMgr.CommitChanges();

}

}

//Get all the website name and IDs

public List<IISObject> GetIISSite()

{

//created an instance for pet object

List<IISObject> iisSiteList = new List<IISObject>();

ServerManager serverMgr = new ServerManager();

SiteCollection sitecollection = serverMgr.Sites;

foreach (var site in sitecollection)

{

IISObject issObject = new IISObject() { webSiteName = site.Name,siteId = site.Id };

iisSiteList.Add(issObject);

}

return iisSiteList;

}