cfe 发表于 2015-11-15 08:41:59

AppPoolService-IIS应用程序池辅助类(C#控制应用程序池操作)

using System.Collections.Generic;
using System.DirectoryServices;
using System.Linq;
using Microsoft.Web.Administration; //位于:C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll
namespace Whir.Software.IISManager.IISManager
{
/// <summary>
///   IIS应用程序池辅助类
/// </summary>
public class AppPoolService
{
protected static string Host = &quot;localhost&quot;;
/// <summary>
///   取得所有应用程序池
/// </summary>
/// <returns></returns>
public static List<string> GetAppPools()
{
var appPools = new DirectoryEntry(string.Format(&quot;IIS://{0}/W3SVC/AppPools&quot;, Host));
return (from DirectoryEntry entry in appPools.Children select entry.Name).ToList();
}
/// <summary>
///   取得单个应用程序池
/// </summary>
/// <returns></returns>
public static ApplicationPool GetAppPool(string appPoolName)
{
ApplicationPool app = null;
var appPools = new DirectoryEntry(string.Format(&quot;IIS://{0}/W3SVC/AppPools&quot;, Host));
foreach (DirectoryEntry entry in appPools.Children)
{
if (entry.Name == appPoolName)
{
var manager = new ServerManager();
app = manager.ApplicationPools;
}
}
return app;
}
/// <summary>
///   判断程序池是否存在
/// </summary>
/// <param name=&quot;appPoolName&quot;>程序池名称</param>
/// <returns>true存在 false不存在</returns>
public static bool IsAppPoolExsit(string appPoolName)
{
bool result = false;
var appPools = new DirectoryEntry(string.Format(&quot;IIS://{0}/W3SVC/AppPools&quot;, Host));
foreach (DirectoryEntry entry in appPools.Children)
{
if (entry.Name.Equals(appPoolName))
{
result = true;
break;
}
}
return result;
}
/// <summary>
///   删除指定程序池
/// </summary>
/// <param name=&quot;appPoolName&quot;>程序池名称</param>
/// <returns>true删除成功 false删除失败</returns>
public static bool DeleteAppPool(string appPoolName)
{
bool result = false;
var appPools = new DirectoryEntry(string.Format(&quot;IIS://{0}/W3SVC/AppPools&quot;, Host));
foreach (DirectoryEntry entry in appPools.Children)
{
if (entry.Name.Equals(appPoolName))
{
try
{
entry.DeleteTree();
result = true;
break;
}
catch
{
result = false;
}
}
}
return result;
}
/// <summary>
///   创建应用程序池
/// </summary>
/// <param name=&quot;appPool&quot;></param>
/// <returns></returns>
public static bool CreateAppPool(string appPool)
{
try
{
if (!IsAppPoolExsit(appPool))
{
var appPools = new DirectoryEntry(string.Format(&quot;IIS://{0}/W3SVC/AppPools&quot;, Host));
DirectoryEntry entry = appPools.Children.Add(appPool, &quot;IIsApplicationPool&quot;);
entry.CommitChanges();
return true;
}
}
catch
{
return false;
}
return false;
}
/// <summary>
///   编辑应用程序池
/// </summary>
/// <param name=&quot;application&quot;></param>
/// <returns></returns>
public static bool EditAppPool(ApplicationPool application)
{
try
{
if (IsAppPoolExsit(application.Name))
{
var manager = new ServerManager();
manager.ApplicationPools.ManagedRuntimeVersion = application.ManagedRuntimeVersion;
manager.ApplicationPools.ManagedPipelineMode = application.ManagedPipelineMode;
//托管模式Integrated为集成 Classic为经典
manager.CommitChanges();
return true;
}
}
catch
{
return false;
}
return false;
}
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: AppPoolService-IIS应用程序池辅助类(C#控制应用程序池操作)