最近发现公司运行的web网站应用程序池会突然停止,做的负载均衡(路由负载)又无法监测到IIS应用程序池的情况,就想着通过某一种监控方式监测IIS应用程序池的情况,如果处关闭状态则立刻重新启动.所说的IIS应用程序池监控也只能算是伪监控,不喜勿喷.

运行: winform + windows计划任务

1.首先获取IIS版本号

    /// <summary>
    /// 获取当前计算机相关信息
    /// </summary>
    public static class AcquireComputerInfo
    {
        /// <summary>
        /// 获取当前IIS版本号
        /// </summary>
        /// <param name="domainname"></param>
        /// <returns></returns>
        public static string GetIssVersionByDri(string domainname = "")
        {
            //try
            //{
            //    if (string.IsNullOrEmpty(domainname))
            //    {
            //        //如果为空 则默认为本地机器
            //        domainname = "LOCALHOST";
            //    }
            //    DirectoryEntry getEntity = new DirectoryEntry("IIS://" + domainname + "/W3SVC/INFO");
            //    string Versions = getEntity.Properties["MajorIISVersionNumber"].Value.ToString();
            //    return Versions;
            //}
            //catch (Exception se)
            //{
            //    //说明一点:IIS5.0中没有(int)entry.Properties["MajorIISVersionNumber"].Value;属性,将抛出异常 证明版本为 5.0
            //    //MessageBox.Show("获取ISS的版本是发生异常信息:" + se.Message);
            //    return "5.0";
            //}

            //RegistryKey表示 Windows 注册表中的项级节点.此类是注册表封装
            string issversion = string.Empty;
            RegistryKey getkey = Registry.LocalMachine.OpenSubKey("software\\microsoft\\inetstp");
            if (getkey != null)
            {
                issversion = Convert.ToInt32(getkey.GetValue("majorversion", -1)).ToString();
                //MessageBox.Show(issversion.ToString());
            }
            return issversion;
        }
        /// <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);
        } 
    }
获取当前计算机相关信息

相关文章: