private string GetServiceStateJSon() { var srvStatus = ServiceProcessManager.GetProcessesStates(); if (srvStatus.Count == 0) { return(string.Empty); } return(HttpParameter.SerializeInJSon(srvStatus.Cast <HttpParameter>().ToList())); }
/// <summary> /// параметры запроса переданы в формате JSON /// /// возвращает ответ, сериализованный в JSON /// если параметры запроса не прочитаны - вернуть состояние всех сервисов /// иначе - выполнить действие /// </summary> private string ProcessFormattedHttpRequest(HttpListenerContext context) { using (var reader = new StreamReader(context.Request.InputStream, context.Request.ContentEncoding)) { var text = reader.ReadToEnd(); if (string.IsNullOrEmpty(text)) { return(GetServiceStateJSon()); } var ptrs = HttpParameter.DeserializeFromJSon(text); if (ptrs.Count == 0) { return(GetServiceStateJSon()); } // остановить / запустить сервис if (ptrs[0] is TradeSharpServiceStartStop) { var cmd = (TradeSharpServiceStartStop)ptrs[0]; var report = new ExecutionReport(); if (cmd.ShouldStart) { var status = ServiceProcessManager.StartProcess(cmd.SrvName); report.IsOk = status == ServiceProcessManager.StartProcessStatus.OK; report.Comment = status.ToString(); } else { var status = ServiceProcessManager.KillProcess(cmd.SrvName); report.IsOk = status == ServiceProcessManager.KillProcessStatus.OK; report.Comment = status.ToString(); } return(HttpParameter.SerializeInJSon(new List <HttpParameter> { report })); } } return(GetServiceStateJSon()); }
private string RenderServicesStatuses(HttpListenerContext context) { var sb = new StringBuilder(); RenderSiteHeader(sb, SiteMode.Services); // вывести состояние служб в виде таблицы var srvStatus = ServiceProcessManager.GetProcessesStates(); if (srvStatus.Count > 0) { sb.AppendLine(" <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"lightTable\">"); sb.AppendLine(" <tr class=\"rowHeader\"><td>Служба</td><td>Процесс</td><td>Состояние</td><td>Управление</td></tr>"); foreach (var stat in srvStatus) { sb.AppendLine(); sb.AppendFormat(" <tr><td>{0}</td><td>{1}</td><td>{2}</td>", stat.Title, stat.FileName, stat.Status); // добавить кнопки - остановить и запустить службу sb.AppendFormat("<td><img alt=\"Остановить\" style=\"cursor:pointer\" src=\"{0}\" onclick=\"ajaxFunction('stopservice=' + encodeURIComponent('{1}'))\" /> ", imgMarkupStop, stat.Name); sb.AppendFormat("<img alt=\"Запустить\" style=\"cursor:pointer\" src=\"{0}\" onclick=\"ajaxFunction('startservice=' + encodeURIComponent('{1}'))\" /></td>", imgMarkupStart, stat.Name); sb.Append("</tr>"); } sb.AppendLine(" </table>"); } // закрыть документ RenderBodyCloseTag(sb); RenderHttpCloseTag(sb); return(sb.ToString()); }
private string StopService(string srvName) { Logger.InfoFormat("StopService({0})", srvName); return(ServiceProcessManager.KillProcess(srvName).ToString()); }