private bool HasWebsite() { var serverManager = new ServerManager(); SiteCollection availableSites = serverManager.Sites; return(availableSites.Any(x => x.Name == _config.SiteName)); }
private string EnsureValidSiteName(SiteCollection sites, string siteName, string suffix) { if (sites.Any(site => site.Name.Equals(siteName + suffix))) { siteName += $"_{GetRandomString(10)}"; } return(siteName); }
public void CreateApplicationSite(string applicationSiteFile) { applicationSiteFilePath = applicationSiteFile; ApplicationSiteModel applicationSite = ApplicationSiteParseConfig(applicationSiteFilePath); if (applicationSite != null) { try { string applicationName = applicationSite.ApplicationName; ServerManager serverManager = new ServerManager(); SiteCollection siteCollection = serverManager.Sites; ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools; Site site = null; ApplicationPool applicationPool = null; _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); _logger.InfoFormat("[{0}] - applicationName: {1}", MethodInfo.GetCurrentMethod().Name, applicationName); if ((siteCollection != null) && (siteCollection.Any())) { site = siteCollection.FirstOrDefault(p => p.Name == applicationName); if ((applicationPoolCollection != null) && (applicationPoolCollection.Any())) { applicationPool = applicationPoolCollection.FirstOrDefault(p => p.Name == applicationName); } if ((site != null) || (applicationPool != null)) { _logger.InfoFormat("[{0}] - ApplicationSite already exists: {1} please use different name", MethodInfo.GetCurrentMethod().Name, applicationName); return; } } if ((!Directory.Exists(applicationSite.PhysicalPath.Source)) && (!File.Exists(applicationSite.PhysicalPath.SourcePackage)) && (!Directory.Exists(applicationSite.PhysicalPath.Destination))) { _logger.InfoFormat("[{0}] - ApplicationSite PhysicalPath doesn't exists, can't create ApplicationSite", MethodInfo.GetCurrentMethod().Name); _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); return; } else if (Directory.Exists(applicationSite.PhysicalPath.Destination)) { _logger.InfoFormat("[{0}] - ApplicationSite PhysicalPath Destination already exists, can't create ApplicationSite", MethodInfo.GetCurrentMethod().Name); _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); return; } else if ((Directory.Exists(applicationSite.PhysicalPath.Source)) && (!Directory.Exists(applicationSite.PhysicalPath.Destination))) { try { Directory.CreateDirectory(applicationSite.PhysicalPath.Destination); if (Directory.Exists(applicationSite.PhysicalPath.Destination)) { CopyApplicationSite(applicationSite.PhysicalPath.Source, applicationSite.PhysicalPath.Destination); } else { _logger.InfoFormat("[{0}] - Failed to create directory {1}, can't create ApplicationSite", MethodInfo.GetCurrentMethod().Name, applicationSite.PhysicalPath.Destination); _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); } } catch (Exception ex) { _logger.Error(string.Format("[{0}] - Problem on create Directory: {1}. Message: {2}", MethodInfo.GetCurrentMethod().Name, applicationSite.PhysicalPath.Destination, ex.Message), ex); _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); } } else if ((File.Exists(applicationSite.PhysicalPath.SourcePackage)) && (!Directory.Exists(applicationSite.PhysicalPath.Destination))) { try { ZipFile.ExtractToDirectory(applicationSite.PhysicalPath.SourcePackage, applicationSite.PhysicalPath.Destination); if (Directory.Exists(applicationSite.PhysicalPath.Destination)) { _logger.InfoFormat("[{0}] - Package extracted into {1}, continue to configure ApplicationSite", MethodInfo.GetCurrentMethod().Name, applicationSite.PhysicalPath.Destination); ConfigureApplicationSite(applicationSite); } else { _logger.InfoFormat("[{0}] - Failed to extract package into {1}, can't create ApplicationSite", MethodInfo.GetCurrentMethod().Name, applicationSite.PhysicalPath.Destination); _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); } } catch (Exception ex) { _logger.Error(string.Format("[{0}] - Problem on extract package: {1} to destination: {2}. Message: {3}", MethodInfo.GetCurrentMethod().Name, applicationSite.PhysicalPath.SourcePackage, applicationSite.PhysicalPath.Destination, ex.Message), ex); _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); } } } catch (Exception ex) { _logger.Error(string.Format("[{0}] - Message: {1}", MethodInfo.GetCurrentMethod().Name, ex.Message), ex); } } else { _logger.InfoFormat("[{0}] - ApplicationSite file config not found, can't create ApplicationSite", MethodInfo.GetCurrentMethod().Name); } }
public void CheckApplicationSite() { ServerManager serverManager = new ServerManager(); SiteCollection siteCollection = serverManager.Sites; bool changeSite = false; bool changePool = false; _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); if ((siteCollection != null) && (siteCollection.Any())) { ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools; string previousApplicationPoolName = string.Empty; string currentApplicationPoolName = string.Empty; ObjectState objectState = ObjectState.Unknown; List <Site> siteList = siteCollection.Where(p => p.State == ObjectState.Started).ToList(); if ((siteList != null) && (siteList.Any())) { _logger.InfoFormat("[{0}] - ======================", MethodInfo.GetCurrentMethod().Name); foreach (Site itemSite in siteList) { objectState = itemSite.State; _logger.InfoFormat("[{0}] - itemSite.Id: {1}", MethodInfo.GetCurrentMethod().Name, itemSite.Id); _logger.InfoFormat("[{0}] - itemSite.Name: {1}", MethodInfo.GetCurrentMethod().Name, itemSite.Name); _logger.InfoFormat("[{0}] - itemSite.ServerAutoStart: {1}", MethodInfo.GetCurrentMethod().Name, itemSite.ServerAutoStart); _logger.InfoFormat("[{0}] - itemSite.State: {1}", MethodInfo.GetCurrentMethod().Name, (int)objectState); _logger.InfoFormat("[{0}] - itemSite.State[string]: {1}", MethodInfo.GetCurrentMethod().Name, objectState); if (objectState == ObjectState.Started) { _logger.InfoFormat("[{0}] - ===========", MethodInfo.GetCurrentMethod().Name); _logger.InfoFormat("[{0}] - ApplicationSite is started, also need to check ApplicationPool state status", MethodInfo.GetCurrentMethod().Name); if (!itemSite.ServerAutoStart) { itemSite.ServerAutoStart = true; changeSite = true; } bool changeLocalPool = false; ApplicationCollection applications = itemSite.Applications; foreach (Application itemApplication in itemSite.Applications) { currentApplicationPoolName = itemApplication.ApplicationPoolName; _logger.InfoFormat("[{0}] - itemApplication.ApplicationPoolName: {1}", MethodInfo.GetCurrentMethod().Name, currentApplicationPoolName); if ((string.IsNullOrWhiteSpace(previousApplicationPoolName) || (currentApplicationPoolName != previousApplicationPoolName))) { previousApplicationPoolName = currentApplicationPoolName; changeLocalPool = CheckSpecificApplicationPool(applicationPoolCollection, currentApplicationPoolName); if (changeLocalPool) { changePool = true; } } else { _logger.InfoFormat("[{0}] - ApplicationPool already been processed", MethodInfo.GetCurrentMethod().Name); } _logger.InfoFormat("[{0}] - ===========", MethodInfo.GetCurrentMethod().Name); } } else { _logger.InfoFormat("[{0}] - ApplicationSite is not started, no need to check ApplicationPool state status", MethodInfo.GetCurrentMethod().Name); } _logger.InfoFormat("[{0}] - ======================", MethodInfo.GetCurrentMethod().Name); } if ((changeSite) || (changePool)) { serverManager.CommitChanges(); } } else { _logger.InfoFormat("[{0}] - No started ApplicationSite at moment", MethodInfo.GetCurrentMethod().Name); } } else { _logger.InfoFormat("[{0}] - Server doesn't have any ApplicationSite", MethodInfo.GetCurrentMethod().Name); } _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); }
public void GetApplicationSiteDetail(string applicationName) { ServerManager serverManager = new ServerManager(); SiteCollection siteCollection = serverManager.Sites; _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); if ((siteCollection != null) && (siteCollection.Any())) { ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools; string previousApplicationPoolName = string.Empty; string currentApplicationPoolName = string.Empty; _logger.InfoFormat("[{0}] - applicationName: {1}", MethodInfo.GetCurrentMethod().Name, applicationName); Site site = siteCollection.FirstOrDefault(p => p.Name == applicationName); if (site != null) { _logger.InfoFormat("[{0}] - site.Id: {1}", MethodInfo.GetCurrentMethod().Name, site.Id); _logger.InfoFormat("[{0}] - site.Name: {1}", MethodInfo.GetCurrentMethod().Name, site.Name); _logger.InfoFormat("[{0}] - site.ServerAutoStart: {1}", MethodInfo.GetCurrentMethod().Name, site.ServerAutoStart); _logger.InfoFormat("[{0}] - site.State: {1}", MethodInfo.GetCurrentMethod().Name, (int)site.State); _logger.InfoFormat("[{0}] - site.State[string]: {1}", MethodInfo.GetCurrentMethod().Name, site.State); BindingCollection bindings = site.Bindings; _logger.InfoFormat("[{0}] - ======================", MethodInfo.GetCurrentMethod().Name); foreach (Binding binding in bindings) { _logger.InfoFormat("[{0}] - binding.Protocol: {1}", MethodInfo.GetCurrentMethod().Name, binding.Protocol); _logger.InfoFormat("[{0}] - binding.BindingInformation: {1}", MethodInfo.GetCurrentMethod().Name, binding.BindingInformation); _logger.InfoFormat("[{0}] - ===========", MethodInfo.GetCurrentMethod().Name); } _logger.InfoFormat("[{0}] - ======================", MethodInfo.GetCurrentMethod().Name); ApplicationCollection applications = site.Applications; foreach (Application itemApplication in site.Applications) { currentApplicationPoolName = itemApplication.ApplicationPoolName; _logger.InfoFormat("[{0}] - itemApplication.ApplicationPoolName: {1}", MethodInfo.GetCurrentMethod().Name, currentApplicationPoolName); _logger.InfoFormat("[{0}] - itemApplication.EnabledProtocols: {1}", MethodInfo.GetCurrentMethod().Name, itemApplication.EnabledProtocols); _logger.InfoFormat("[{0}] - itemApplication.Path: {1}", MethodInfo.GetCurrentMethod().Name, itemApplication.Path); if ((string.IsNullOrWhiteSpace(previousApplicationPoolName) || (currentApplicationPoolName != previousApplicationPoolName))) { previousApplicationPoolName = currentApplicationPoolName; GetApplicationPoolDetail(applicationPoolCollection, currentApplicationPoolName); } else { _logger.InfoFormat("[{0}] - using same ApplicationPoolName", MethodInfo.GetCurrentMethod().Name); } _logger.InfoFormat("[{0}] - ===========", MethodInfo.GetCurrentMethod().Name); foreach (VirtualDirectory itemVirtualDirectory in itemApplication.VirtualDirectories) { _logger.InfoFormat("[{0}] - itemVirtualDirectory.LogonMethod: {1}", MethodInfo.GetCurrentMethod().Name, (int)itemVirtualDirectory.LogonMethod); _logger.InfoFormat("[{0}] - itemVirtualDirectory.LogonMethod[string]: {1}", MethodInfo.GetCurrentMethod().Name, itemVirtualDirectory.LogonMethod); _logger.InfoFormat("[{0}] - itemVirtualDirectory.UserName: {1}", MethodInfo.GetCurrentMethod().Name, itemVirtualDirectory.UserName); _logger.InfoFormat("[{0}] - itemVirtualDirectory.Password: {1}", MethodInfo.GetCurrentMethod().Name, itemVirtualDirectory.Password); _logger.InfoFormat("[{0}] - itemVirtualDirectory.Path: {1}", MethodInfo.GetCurrentMethod().Name, itemVirtualDirectory.Path); _logger.InfoFormat("[{0}] - itemVirtualDirectory.PhysicalPath: {1}", MethodInfo.GetCurrentMethod().Name, itemVirtualDirectory.PhysicalPath); _logger.InfoFormat("[{0}] - ===========", MethodInfo.GetCurrentMethod().Name); } _logger.InfoFormat("[{0}] - ======================", MethodInfo.GetCurrentMethod().Name); } } else { _logger.InfoFormat("[{0}] - ApplicationSite doesn't exists", MethodInfo.GetCurrentMethod().Name); } } else { _logger.InfoFormat("[{0}] - Server doesn't have any ApplicationSite", MethodInfo.GetCurrentMethod().Name); } _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); }
/// <summary> /// Checks if web site exists in the iis. /// </summary> /// <param name="serverManager">the server manager.</param> /// <param name="siteName">Site name to be checked if it exists.</param> /// <returns>True if web site exists in iis.</returns> protected static bool WebsiteExists(ServerManager serverManager, string siteName) { SiteCollection sitecollection = serverManager.Sites; return(sitecollection.Any(site => site.Name.Equals(siteName, StringComparison.OrdinalIgnoreCase))); }
public void StopApplicationSite(string applicationName) { if (applicationName == "Default Web Site") { _logger.InfoFormat("[{0}] - Need to stop this ApplicationSite: {1} manually because it can conflict with ApplicationPool default", MethodInfo.GetCurrentMethod().Name, applicationName); return; } ServerManager serverManager = new ServerManager(); SiteCollection siteCollection = serverManager.Sites; bool changeSite = false; bool changePool = false; _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); if ((siteCollection != null) && (siteCollection.Any())) { ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools; string previousApplicationPoolName = string.Empty; string currentApplicationPoolName = string.Empty; _logger.InfoFormat("[{0}] - applicationName: {1}", MethodInfo.GetCurrentMethod().Name, applicationName); Site site = siteCollection.FirstOrDefault(p => p.Name == applicationName); if (site != null) { ObjectState objectState = site.State; _logger.InfoFormat("[{0}] - site.Id: {1}", MethodInfo.GetCurrentMethod().Name, site.Id); _logger.InfoFormat("[{0}] - site.Name: {1}", MethodInfo.GetCurrentMethod().Name, site.Name); _logger.InfoFormat("[{0}] - site.ServerAutoStart: {1}", MethodInfo.GetCurrentMethod().Name, site.ServerAutoStart); _logger.InfoFormat("[{0}] - site.State: {1}", MethodInfo.GetCurrentMethod().Name, (int)objectState); _logger.InfoFormat("[{0}] - site.State[string]: {1}", MethodInfo.GetCurrentMethod().Name, objectState); if (objectState != ObjectState.Stopped) { _logger.InfoFormat("[{0}] - ======================", MethodInfo.GetCurrentMethod().Name); _logger.InfoFormat("[{0}] - ApplicationSite need to be stopped", MethodInfo.GetCurrentMethod().Name); bool retry = true; int ctr = 0; while (retry) { try { ObjectState returnState = site.Stop(); _logger.InfoFormat("[{0}] - returnState: {1}", MethodInfo.GetCurrentMethod().Name, (int)returnState); _logger.InfoFormat("[{0}] - returnState[string]: {1}", MethodInfo.GetCurrentMethod().Name, returnState); if (returnState == ObjectState.Stopped) { _logger.InfoFormat("[{0}] - ApplicationSite is stopped", MethodInfo.GetCurrentMethod().Name); site.ServerAutoStart = false; changeSite = true; retry = false; } else { _logger.InfoFormat("[{0}] - Failed to stop ApplicationSite", MethodInfo.GetCurrentMethod().Name); retry = true; } } catch (Exception ex) { retry = true; _logger.Error(string.Format("[{0}] - Problem on stop ApplicationPool. Message: {1}, retry {2} time(s)", MethodInfo.GetCurrentMethod().Name, ex.Message, ctr), ex); } _logger.InfoFormat("[{0}] - retry status: {1}", MethodInfo.GetCurrentMethod().Name, retry); if (ctr > 10) { retry = false; } ctr++; if (retry) { Thread.Sleep(THREAD_SLEEP); } } } bool changeLocalPool = false; ApplicationCollection applications = site.Applications; foreach (Application itemApplication in site.Applications) { currentApplicationPoolName = itemApplication.ApplicationPoolName; _logger.InfoFormat("[{0}] - itemApplication.ApplicationPoolName: {1}", MethodInfo.GetCurrentMethod().Name, currentApplicationPoolName); _logger.InfoFormat("[{0}] - Check if ApplicationPool need to be stopped", MethodInfo.GetCurrentMethod().Name); if ((string.IsNullOrWhiteSpace(previousApplicationPoolName) || (currentApplicationPoolName != previousApplicationPoolName))) { previousApplicationPoolName = currentApplicationPoolName; changeLocalPool = StopApplicationPool(applicationPoolCollection, currentApplicationPoolName); if (changeLocalPool) { changePool = true; } } else { _logger.InfoFormat("[{0}] - ApplicationPool already been processed", MethodInfo.GetCurrentMethod().Name); } _logger.InfoFormat("[{0}] - ======================", MethodInfo.GetCurrentMethod().Name); } if ((changeSite) || (changePool)) { serverManager.CommitChanges(); } } else { _logger.InfoFormat("[{0}] - ApplicationSite doesn't exists", MethodInfo.GetCurrentMethod().Name); } } else { _logger.InfoFormat("[{0}] - Server doesn't have any ApplicationSite", MethodInfo.GetCurrentMethod().Name); } _logger.InfoFormat("[{0}] - =============================================", MethodInfo.GetCurrentMethod().Name); }