private dynamic GetConnectionString(dynamic parameters) { ISiteConnectionString connectionString = this._connectionStringRepository.GetSiteConnectionString(parameters.SiteId); logManager.Write($"[GET]-> GetConnectionString Id: {connectionString.Id}"); return(Response.AsJson(connectionString)); }
public static void SendAlert(ISiteConnectionString connectionString) { ISite site = connectionString.Site; if (site == null) { return; } bool isSiteAvailable = connectionString.Site.State.Swap() == AppServices.IIS.Models.SiteState.Started; string statusFormatted = connectionString.ServerName + "," + connectionString.Port + "&" + connectionString.DatabaseName; string appVersionFormatted = $"Bulid {FileOperations.AssemblyVersion}"; string availabilityFormatted; string isAvailableFormatted; string leftImageContent; string titleColorContent; if (isSiteAvailable) { availabilityFormatted = "WARNING! site is running but the dependency service not resolved."; isAvailableFormatted = "Yes"; leftImageContent = MailService.BASE64_WARNING; titleColorContent = MailService.TITLE_COLOR_YELLOW; } else { availabilityFormatted = "CRITICAL CASE! site is not accessible and the dependency service not resolved."; isAvailableFormatted = "No"; leftImageContent = MailService.BASE64_CRITICAL_CASE; titleColorContent = MailService.TITLE_COLOR_RED; } MailMessage mailMessage = new MailMessage { MailTitle = "ConnectionString Availability test failed!", MailSubTitle = statusFormatted, MailStatus1 = "DATABASE Connection Check FAILED!", MailStatus2 = availabilityFormatted, MailMachineName = site.MachineName, MailSiteUrl = site.Name, MailSiteName = site.Name, MailSiteAvailable = isAvailableFormatted, MailCheckTime = connectionString.LastCheckTime.ToString(), MailAppVersion = appVersionFormatted, MailLeftImage = leftImageContent, MailTitleColor = titleColorContent }; IISMailQueue mail = new IISMailQueue { MailContent = mailMessage.MailContent }; WebTransfer.PostMail(mail); }
public static IEnumerable <ISiteConnectionString> TestAvaiilabilty(this IEnumerable <ISiteConnectionString> connectionStrings) { List <ISiteConnectionString> connectionstringList = new List <ISiteConnectionString>(); List <Task> csTaskList = new List <Task>(); foreach (ISiteConnectionString value in connectionStrings) { Task task = new Task(new Action(delegate { try { ISiteConnectionString connectionString = value; Stopwatch watcher = new Stopwatch(); watcher.Start(); XConsole.WriteLine("CheckSQLDatabaseAccesibility:" + connectionString.RawConnectionString); bool isAvailable = WebOperations.CheckSQLDatabaseAccesibility(connectionString?.RawConnectionString); watcher.Stop(); connectionString.IsAvailable = isAvailable; connectionString.ResponseTime = watcher.ElapsedMilliseconds; connectionstringList.Add(connectionString); watcher.Reset(); if (MultiThreading.ActiveTaskCounter > 0) { MultiThreading.ActiveTaskCounter--; } } catch (Exception ex) { XConsole.WriteLine(ex.ToString()); logManager.Write(ex.ToString()); } })); csTaskList.Add(task); } MultiThreading.Run(csTaskList); return(connectionstringList.AsEnumerable()); }
public static void TestAvailability(object @value) { ISiteConnectionString connectionString = value as ISiteConnectionString; Stopwatch watcher = new Stopwatch(); SiteConnectionString connectionStringBlock = new SiteConnectionString(); watcher.Start(); bool isAvailable = WebOperations .CheckSQLDatabaseAccesibility(connectionString.RawConnectionString); watcher.Stop(); connectionStringBlock.IsAvailable = isAvailable; connectionStringBlock.LastCheckTime = DateTime.Now; connectionStringBlock.ResponseTime = watcher.ElapsedMilliseconds; watcher.Reset(); if (MultiThreading.ActiveTaskCounter > 0) { MultiThreading.ActiveTaskCounter--; } }
public static IEnumerable <ISiteConnectionString> TrackConnectionString(IEnumerable <ISite> sites) { // Create Search Dictionary IEnumerable <ISiteConnectionString> dictionaryConnectionStrings = sites.GetSearchDictionary <ISiteConnectionString>(TrackerType.ConnectionString); if (dictionaryConnectionStrings == null) { return(null); } // Test ConnectionStrings in the Search Dictionary dictionaryConnectionStrings = dictionaryConnectionStrings.TestAvaiilabilty(); IList <SiteConnectionString> retvals = new List <SiteConnectionString>(); foreach (ISite site in sites) // for each sites..do { // Create list of deleted connection strings List <SiteConnectionString> deletedConnectionstrings = new List <SiteConnectionString>(); // Get Connectionstrings from database. IEnumerable <SiteConnectionString> dbConnectionstrings = site.GetDBConnectionStrings(); // Get Connectionstrings from live configuration file. IEnumerable <SiteConnectionString> currentConnectionstrings = site.GetConnectionStrings(); // If live connectionstrings is null if (dbConnectionstrings.Count() < 1 && currentConnectionstrings == null) { continue; // skip this iteration } deletedConnectionstrings = dbConnectionstrings.ToList(); foreach (SiteConnectionString currConnectionstring in currentConnectionstrings) //foreach connectionstring { // Search dictionary test results for site's current connectionstring ISiteConnectionString siteConnectionString = dictionaryConnectionStrings.FirstOrDefault(dict => dict.RawConnectionString == currConnectionstring.RawConnectionString); deletedConnectionstrings = deletedConnectionstrings.SkipWhile(x => x.ConnectionName == currConnectionstring.ConnectionName && x.RawConnectionString == currConnectionstring.RawConnectionString).ToList(); if (siteConnectionString == null) // If cannot found any result. { continue; // Skip this iteration. } currConnectionstring.LastCheckTime = DateTime.Now; // Update Checkdate retvals.Add(siteConnectionString as SiteConnectionString); // add this record to return values. // If Connectionstring is not available and mail status yes if (!currConnectionstring.IsAvailable && currConnectionstring.SendAlertMailWhenUnavailable) { // send mail } } // end of loop. if (deletedConnectionstrings.Count() > 0) { deletedConnectionstrings.ForEach(dbcs => dbcs.DeleteDate = DateTime.Now); WebTransfer.PostSiteConnectionString(retvals); } } // end of loop. if (retvals.Count() > 0) { WebTransfer.PostSiteConnectionString(retvals); } return(retvals.AsEnumerable()); }