Welcome 微信登录

首页 / 网页编程 / ASP.NET / 创建windows服务,定时监控网站应用程序池

创建windows服务,定时监控网站应用程序池2011-12-18 博客园 dongpo最近网站总是报"Timer_Connection"错误,导致该网站所使用的应用程序池由于错误过多停止运行,网站也就出现了service unvaliable,无法访问,在网上查了很多资料, 结果很让人无奈,这个问题已经困扰我了很久,一直没有得到解决,后来同事发来一篇文章让我有了新的解决方法,虽然不能根本解决这个报错,但可以快速清空并恢复指定的应 用程序池

不多说了,看看下面这个方法吧,主要是创建一个连接(如你要监控的网站的一个地址),如果能访问到这个页面说明网站应用程序池没有问题,如果不能访问,也就是会报错 喽,这时我们就可以调用下面的方法,去清空并重启该应用程序池,代码如下:

public void RestartAppPool()    {      System.Net.HttpWebRequest request = (HttpWebRequest)WebRequest.Create(System.Configuration.ConfigurationSettings.AppSettings["webfile"].ToString());      request.KeepAlive = false;      try      {        System.Net.HttpWebResponse response = (HttpWebResponse)request.GetResponse();        response.Close();      }      catch      {        DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC/AppPools/" + System.Configuration.ConfigurationSettings.AppSettings["AppPoolName"].ToString());        root.Invoke("Start", null);        root.CommitChanges();        AddEventLog("重启应用程序池于:"+DateTime.Now.ToLongTimeString());        root.Close();      }    }
这里有一点需要注意,DirectoryEntry需要引用C:WINDOWSMicrosoft.NETFrameworkv2.0.50727System.DirectoryServices.dll

另外还要Using System.Net

而我则是创建了一个windows service来定时去检查应用程序池的状态.

另外,大家在创建windows service的时候可不要忘记在安装进程控件(serviceProcessInstaller1)属性中将Account设置为Local System,否则在您安装这个服务时会提示 您输入用户名及密码,如下图

这时您需要在安装服务之前创建一个windows账户,并且需要在策略中"作为服务登录"添加您之前创建的用户,当然这样做实在很麻烦,为了不在安装中出现这个问题,一定 要将Account设置为Local System,本人之前就遇见了这个问题,最后不得不在网上又搜了一圈才明白到底是怎么回事,希望您在遇到这个问题是对您有所帮助哦.