应用场景:IIS网站挂掉,系统自动重启IIS,通知相关联系人;
主要代码:
监控类
public class monitoringiis { EmailSend send = new EmailSend(); public void MonitoringISSAppPool(object obj) { string method_Start = "Start"; string ISSAppPoolName = ""; string iislist = System.Configuration.ConfigurationManager.AppSettings["iislist"]; DirectoryEntry appPool = new DirectoryEntry("IIS://LOCALHOST/W3SVC/AppPools"); while (true) { try { foreach (DirectoryEntry item in appPool.Children) { string AppPoolCommand = item.Properties["ManagedPipelineMode"].Value.ToString(); string ManagedRuntimeVersion = item.Properties["ManagedRuntimeVersion"].Value.ToString();//,net版本号 string AppPoolState = item.Properties["AppPoolState"].Value.ToString();//当前状态 if (AppPoolState != "2" && iislist.Contains(item.Name.Trim())) { DirectoryEntry findPool = appPool.Children.Find(item.Name, "IIsApplicationPool"); findPool.Invoke(method_Start, null); ISSAppPoolName = item.Name; appPool.CommitChanges(); appPool.Close(); var IIsMsg = string.Format("应用池名称:[{0}],NET版本:{1},标识:{2},当前状态:[{3}],时间:{4}/n", item.Name, ManagedRuntimeVersion, item.SchemaClassName, "已启动", DateTime.Now.ToString()); logclass.Info(IIsMsg); } } Thread.Sleep(180000); } catch (Exception ex) { logclass.Error("MonitoringISSAppPool:" + ISSAppPoolName + string.Format("==时间:{0},启动失败", DateTime.Now) + "==" + ex.Source + "==" + ex.InnerException + "==" + ex.TargetSite + "==" + ex.Message);//日志记录错误信息 send.SendMail(string.Format("服务器:" + GetComputerInfo() + "==MonitoringISSAppPool:{0},时间:{1},启动失败", ISSAppPoolName, DateTime.Now) + "==" + ex.Message, ISSAppPoolName + "ISS服务发生问题,请尽快查看原因并解决");//邮件发送错误信息 Thread.Sleep(10000); } } } /// <summary>获取当前计算机信息 例如:计算机名:aaa,IP:10.10.10.10</summary> /// <returns></returns> public static string GetComputerInfo() { var computerNmae = System.Net.Dns.GetHostName();//获取当前计算机名称 var computerIp = new System.Net.IPAddress(System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList[0].Address).ToString(); //获取局域网IP return string.Format("PC_Name: {0},IP: {1}", computerNmae, computerIp); } }