private static void InstallService(ISLogger logger) { if (IsInstalled()) { Console.WriteLine("Try to install collection service but, service already installed! "); logger.Debug("Try to install collection service but, service already installed! "); return; } logger.Debug("Install collection service... "); AssemblyInstaller installer = GetInstaller(logger); IDictionary state = new Hashtable(); try { installer.Install(state); installer.Commit(state); } catch (Exception e) { Console.WriteLine("Install CollectionService error " + e.Message); logger.Error("Install CollectionService error " + e.Message); logger.Error(e.ToString()); } finally { try { installer.Rollback(state); } catch { }; } }
protected override void OnStop() { // try { if (WCFHost != null) { WCFHost.Close(); } } catch (Exception e) { logger.Error("WCF close error ", e); } try { sqlTaskScheduler.Stop(); logger.Debug("collection service stopped"); } catch (Exception e) { logger.Error("stop service error ", e); } // sqlTaskScheduler.Stop(); }
private static void StopService(ISLogger logger) { if (!IsInstalled()) { logger.Debug("try stop collection service, but it is not installed! "); Console.WriteLine("try stop collection service, but it is not installed! "); return; } logger.Debug("Stopping collection service... "); Console.WriteLine("Stopping collection service... "); using (ServiceController controller = new ServiceController(name)) { try { if (controller.Status != ServiceControllerStatus.Stopped) { controller.Stop(); controller.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(10)); } } catch (Exception e) { Console.WriteLine("Stop CollectionService error " + e.Message); logger.Error("Stop CollectionService error " + e.Message); logger.Error(e.ToString()); } } }
private static void StartService(ISLogger logger) { if (!IsInstalled()) { logger.Debug("CollectionService already started! "); Console.WriteLine("CollectionService already started! "); return; } logger.Debug("Starting collection service.... "); Console.WriteLine("Starting collection service.... "); using (ServiceController controller = new ServiceController(name)) { try { if (controller.Status != ServiceControllerStatus.Running) { controller.Start(); controller.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(10)); } } catch (Exception e) { Console.WriteLine("Start CollectionService() error " + e.Message); logger.Error("Start CollectionService() error " + e.Message); logger.Error(e.ToString()); } } }
public async void RemoveInstanceForeverAsync(CollectionResult result, ISLogger logger) { logger.Debug("Removing forever instance id=" + result.InstanceID); try { MsSqlMonitorEntities context = new MsSqlMonitorEntities(); Instance instance = context.Instances.Find(result.InstanceID); instance.Assigns.ToList().ForEach(i => context.Assigns.Remove(i)); instance.Roles.ToList().ForEach(r => { r.RefuseAllLogins(); context.Entry(r).State = EntityState.Deleted; }); // Delete all users before update. instance.Logins.ToList().ForEach(l => context.Entry(l).State = EntityState.Deleted); // Delete all roles from databases instance.Databases.ToList().ForEach(db => db.Roles.ToList().ForEach(role => { role.RefuseAllUsers(); context.Entry(role).State = EntityState.Deleted; })); instance.Databases.ToList().ForEach(db => db.Users.ToList().ForEach(user => { user.RefuseAllRoles(); context.Entry(user).State = EntityState.Deleted; })); // Delete all databases instance.Databases.ToList().ForEach(db => context.Entry(db).State = EntityState.Deleted); context.Entry(instance).State = EntityState.Deleted; await context.SaveChangesAsync().ConfigureAwait(false); } catch (Exception e) { logger.Error(e.StackTrace); } }
private static void UninstallService(ISLogger logger) { if (!IsInstalled()) { Console.WriteLine("CollectionService already uninstalled! "); logger.Debug("CollectionService already uninstalled! "); return; } try { using (AssemblyInstaller installer = GetInstaller(logger)) { IDictionary state = new Hashtable(); try { installer.Uninstall(state); } catch (Exception e) { Console.WriteLine("Uninstall CollecionService error " + e.Message); logger.Error("Uninstall CollecionService error " + e.Message); logger.Error(e.ToString()); } } } catch (Exception e) { Console.WriteLine("Uninstall CollecionService error " + e.Message); logger.Error("Uninstall CollecionService error " + e.Message); logger.Error(e.ToString()); } }
public async Task <SqlConnection> OpenConnection(Instance instance) { if (instance == null) { logger.Error("ConnectionManager.OpenConnection: get null instance"); return(null); } Impersonation impersonation = null; ImpersonationResult impResult = null; connection = new SqlConnection(BuildConnectionString(instance)); if (instance.Authentication == AuthenticationType.Windows) { impersonation = new Impersonation(); impResult = impersonation.Impersonate(instance.Login, null, instance.Password);//тут if (impResult.HasError) { logger.Error("Imperosnation error: ConnectionManager.OpenConnection: Instance id =" + instance.Id); } else { logger.Debug("Impersonation oK instance id =" + instance.Id); } return(null); } try { //ConfigureAwait(true); to return to the same context to do undo imersonation for the same thread await connection.OpenAsync().ConfigureAwait(true); } catch (Exception e) { logger.Error("ConnectionManager.OpenConnection: Error open connection instance=" + instance.InstanceName, e); return(null); } finally { if (impResult != null && impersonation != null) { if (!impResult.HasError) { impersonation.UndoImpersonation(impResult.User); } } } return(connection); }
protected override void OnStart(string[] args) { IUnityContainer unity = DependencyConfig.Initialize(); logger = ServiceLocator.Current.GetInstance <ISLogger>(); resourceManager = ServiceLocator.Current.GetInstance <IResourceManager>(); connManager = ServiceLocator.Current.GetInstance <IConnectionManager>(); encryptionManager = ServiceLocator.Current.GetInstance <IEncryptionManager>(); logger.Debug("collection service started"); unitOfWork = unity.Resolve <IUnitOfWork>(new ParameterOverride("context", new MsSqlMonitorEntities())); try { WCFHost = new ServiceHost(this, new Uri[] { new Uri(WCFADRESS) }); var behaviour = WCFHost.Description.Behaviors.Find <ServiceBehaviorAttribute>(); behaviour.InstanceContextMode = InstanceContextMode.Single; WCFHost.AddServiceEndpoint(typeof(IWCFContract), new NetTcpBinding(), WCFSERVICE); WCFHost.Open(); } catch (Exception e) { WCFHost = null; logger.Error("WCF open error ", e); } try { sqlTaskScheduler = new SQLTaskScheduler(logger, resourceManager, unitOfWork, connManager, encryptionManager); sqlTaskScheduler.Start(); } catch (Exception e) { logger.Error("start service error ", e); } // }
public void InstanceUpdateFinished(int instanceID, JobType.UpdateInfoType jobType) { KeyValuePair <long, SchedulerWorkItem> pair = nowCollecting.FirstOrDefault(x => x.Value.InstanceId == instanceID && x.Value.JobType == jobType); if (pair.Value == null) { return; } SchedulerWorkItem value; nowCollecting.TryRemove(pair.Key, out value); logger.Debug("update finished ID= " + value.InstanceId + " jobType=" + value.JobType); }