This post helps you to create a new website in IIS.
It Includes
– Create new website
– Setup binding information like port and IP address
– Create Application Pool
– Remove a website from the IIS
Pre-Requisite
- Add Microsoft.web.Administration dll reference to the project library. you can find this library file in system32\inetsrv folder.
- Add the following line to your web config
<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 the 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; }