C#监控IIS程序池状态(可以自动重启程序池)

3.png

最近有个项目部署在IIS上,时不时会出现程序池自动停止的情况,程序池一停止就整个项目废了。所以百度了一下,找到一个C#监控IIS程序池的方法,下面大家看代码。


///

/// IIS应用地址池监控方法

///

private void IISAppPools()

{

try

{

string entPath = "IIS://LOCALHOST/W3SVC/AppPools";

while (true)

{

DirectoryEntry rootEntry = new DirectoryEntry(entPath);

foreach (DirectoryEntry AppPool in rootEntry.Children)

{

if (AppPool.Properties["AppPoolState"].Value.ToString() != "2")

{

//AppPool.Name + "应用程序池已停止"


//重启程序池

AppPool.Invoke("Start", null);

AppPool.CommitChanges();


//AppPool.Name + "应用程序池已成功启动"

}

AppPool.Close();

}


//每3分钟监测一次

Thread.Sleep(1000 * 60 * 3);

}

}

catch (Exception ex)

{


}

}



//使用独立线程来监测IIS程序池状态

Thread t = new Thread(IISAppPools);

t.Start();


如果报以下异常,请安装IIS 6兼容组件【IIS 元数据库和IIS 6配置兼容性

System.Runtime.InteropServices.COMException (0x80005000): 未知错误(0x80005000)

在 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)

在 System.DirectoryServices.DirectoryEntry.Bind()

在 System.DirectoryServices.DirectoryEntry.get_IsContainer()

在 System.DirectoryServices.DirectoryEntries.ChildEnumerator..ctor(DirectoryEntry container)

在 System.DirectoryServices.DirectoryEntries.GetEnumerator()

1.png


安装成功后,如果还是报错,请使用管理员身份运行程序

2.png

  1. 本网站所收集的部分资料来源于互联网,本站不对其真实性负责,也不构成任何其他建议。如果您发现有侵犯您权益的内容,请与我们取得联系,我们会及时修改或删除。
  2. 传递知识、传递力量,欢迎各位网友对本站的文章进行转载和分享。
  3. 本站QQ群交流群:904314688  群号:904314688
发表评论
 
评论列表(目前共有 条评论)
暂时还没有评论哦~

文章搜索

商家广告


版权所有:秋风雅居 (www.198933.com) ©2024 All Rights Reserved.

粤ICP备20031662号