C# 操作IIS加强版(添加,删除,启动,暂停网站,默认页,绑定信息)
主要功能如下
using Microsoft.Web.Administration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AutoIIS.Helper
{
///
public class IISHelper
{
#region 创建网站
///
/// 网站名
/// host
/// 网站路径
///
public static bool CreateSite(string siteName, string bindingInfo, string physicalPath)
{
return CreateSite(siteName, "http", bindingInfo, physicalPath, true, siteName, ProcessModelIdentityType.ApplicationPoolIdentity, null, null, ManagedPipelineMode.Integrated, null);
}
///
/// 网站名
/// http头
/// 网站例如
/// 网站的路径
/// 是否创建应用程序程序池
/// 应用程序名
/// 标识
/// 用户名没有时用户名为Null即可
/// 密码
/// 模式,经典还是集成
/// .net版本
///
public static bool CreateSite(string siteName, string protocol, string bindingInformation, string physicalPath, bool createAppPool, string appPoolName,
ProcessModelIdentityType identityType, string appPoolUserName, string appPoolPassword, ManagedPipelineMode appPoolPipelineMode, string managedRuntimeVersion)
{
using (ServerManager mgr = new ServerManager())
{
//删除网站和应用程序池
DeleteSite(siteName);
Site site = mgr.Sites.Add(siteName, protocol, bindingInformation.ToLower(), physicalPath);
// PROVISION APPPOOL IF NEEDED
if (createAppPool)
{
ApplicationPool pool = mgr.ApplicationPools.Add(appPoolName);
if (pool.ProcessModel.IdentityType != identityType)
{
pool.ProcessModel.IdentityType = identityType;
}
if (!String.IsNullOrEmpty(appPoolUserName))
{
pool.ProcessModel.UserName = appPoolUserName;
pool.ProcessModel.Password = appPoolPassword;
}
if (appPoolPipelineMode != pool.ManagedPipelineMode)
{
pool.ManagedPipelineMode = appPoolPipelineMode;
}
site.Applications\["/"\].ApplicationPoolName = pool.Name;
}
if (site != null)
{
mgr.CommitChanges();
return true;
}
}
return false;
}
#endregion
#region 删除网站和应用程序池
/// <summary>
/// 删除网站包括应用程序池
/// </summary>
/// <param name="siteName">网站名</param>
/// <param name="isAppPool">是否删除应用程序池默认为删除</param>
/// <returns>成功返回True,失败返回false</returns>
public static bool DeleteSite(string siteName, Boolean isAppPool = true)
{
using (ServerManager mgr = new ServerManager())
{
//判断web应用程序是否存在
if (mgr.Sites\[siteName\] != null)
{
if (isAppPool)
{
//判断应用程序池是否存在
if (mgr.ApplicationPools\[siteName\] != null)
{
mgr.ApplicationPools.Remove(mgr.ApplicationPools\[siteName\]);
}
}
mgr.Sites.Remove(mgr.Sites\[siteName\]);
mgr.CommitChanges();
return true;
}
else
{
return false;
}
}
}
/// <summary>
/// 删除应用程序池
/// </summary>
/// <param name="appPoolName">应用程序池名</param>
/// <returns>成功返回True,失败返回false</returns>
public static bool DeletePool(string appPoolName)
{
using (ServerManager mgr = new ServerManager())
{
ApplicationPool pool = mgr.ApplicationPools\[appPoolName\];
if (pool != null)
{
mgr.ApplicationPools.Remove(pool);
mgr.CommitChanges();
return true;
}
else
{
return false;
}
}
}
#endregion
#region 默认文档 添加和删除
/// <summary>
/// 添加默认文档
/// </summary>
/// <param name="siteName">网站</param>
/// <param name="defaultDocName">默认文档名</param>
/// <returns>成功返回True,失败返回false</returns>
public static bool AddDefaultDocument(string siteName, string defaultDocName)
{
using (ServerManager mgr = new ServerManager())
{
Configuration cfg = mgr.GetWebConfiguration(siteName);
ConfigurationSection defaultDocumentSection = cfg.GetSection("system.webServer/defaultDocument");
ConfigurationElement filesElement = defaultDocumentSection.GetChildElement("files");
ConfigurationElementCollection filesCollection = filesElement.GetCollection();
foreach (ConfigurationElement elt in filesCollection)
{
if (elt.Attributes\["value"\].Value.ToString() == defaultDocName)
{
return false;//添加时存在
}
}
try
{
//创建一个新的默认页
ConfigurationElement docElement = filesCollection.CreateElement();
docElement.SetAttributeValue("value", defaultDocName);
filesCollection.Add(docElement);
}
catch (Exception)
{
return false;//添加时发生错误
}
mgr.CommitChanges();
}
return true;//添加成功
}
/// <summary>
/// 删除默认文档
/// </summary>
/// <param name="siteName">网站</param>
/// <param name="defaultDocName">默认文档名</param>
/// <returns>成功返回True,失败返回false</returns>
public static bool DeleteDefaultDocument(string siteName, string defaultDocName)
{
using (ServerManager mgr = new ServerManager())
{
Configuration cfg = mgr.GetWebConfiguration(siteName);
ConfigurationSection defaultDocumentSection = cfg.GetSection("system.webServer/defaultDocument");
ConfigurationElement filesElement = defaultDocumentSection.GetChildElement("files");
ConfigurationElementCollection filesCollection = filesElement.GetCollection();
//创建一个新的默认页
ConfigurationElement docElement = filesCollection.CreateElement();
bool isdefault = false;
//不存在则返回
foreach (ConfigurationElement elt in filesCollection)
{
if (elt.Attributes\["value"\].Value.ToString() == defaultDocName)
{
docElement = elt;
isdefault = true;
}
}
if (!isdefault)
{
return false;//不存在
}
try
{
filesCollection.Remove(docElement);
}
catch (Exception)
{
return false;//删除时发生错误
}
mgr.CommitChanges();
}
return true;//删除成功
}
#endregion
#region 虚拟目录添加和删除
/// <summary>
/// 添加虚拟目录
/// </summary>
/// <param name="siteName">网站名</param>
/// <param name="vDirName">目录名</param>
/// <param name="physicalPath">对应的文件夹路径</param>
/// <returns>成功返回True,失败返回false</returns>
public static bool CreateVDir(string siteName, string vDirName, string physicalPath)
{
using (ServerManager mgr = new ServerManager())
{
Site site = mgr.Sites\[siteName\];
if (site == null)
{
return false;
}
site.Applications.Add("/" + vDirName, physicalPath);
mgr.CommitChanges();
}
return true;
}
/// <summary>
/// 删除虚拟目录
/// </summary>
/// <param name="siteName">网站名</param>
/// <param name="vDirName">目录名</param>
/// <returns>成功返回True,失败返回false</returns>
public static bool DeleteVDir(string siteName, string vDirName)
{
using (ServerManager mgr = new ServerManager())
{
Site site = mgr.Sites\[siteName\];
if (site == null)
{
return false;
}
site.Applications.Remove(site.Applications\["/" + vDirName\]);
mgr.CommitChanges();
}
return true;
}
#endregion
#region 网站重启,暂停,启动
/// <summary>
/// 启动网站
/// </summary>
/// <param name="siteName">网站名</param>
/// <returns>成功返回True,失败返回false</returns>
public static bool Start(string siteName)
{
try
{
using (ServerManager mgr = new ServerManager())
{
if (mgr.Sites\[siteName\].State == ObjectState.Stopped)
{
mgr.Sites\[siteName\].Start();
}
mgr.CommitChanges();
}
}
catch (Exception)
{
return false;
}
return true;
}
/// <summary>
/// 暂停网站
/// </summary>
/// <param name="siteName">网站名</param>
/// <returns>成功返回True,失败返回false</returns>
public static bool Stop(string siteName)
{
try
{
using (ServerManager mgr = new ServerManager())
{
if (mgr.Sites\[siteName\].State == ObjectState.Started)
{
mgr.Sites\[siteName\].Stop();
}
mgr.CommitChanges();
}
}
catch (Exception)
{
return false;
}
return true;
}
#endregion
#region 获取网站的信息
/// <summary>
/// 根据网站名获取网站信息
/// </summary>
/// <param name="siteName"></param>
/// <returns></returns>
public static Site GetSiteInfo(string siteName)
{
using (ServerManager mgr = new ServerManager())
{
return mgr.Sites\[siteName\];
}
}
/// <summary>
/// 获取所有的网站数据
/// </summary>
/// <returns>SiteCollection</returns>
public static SiteCollection GetSiteList()
{
using (ServerManager mgr = new ServerManager())
{
return mgr.Sites;
}
}
#endregion
#region 添加绑定信息
/// <summary>
/// 添加绑定信息
/// </summary>
/// <param name="siteName">网站名</param>
/// <param name="ip">ip</param>
/// <param name="port">port</param>
/// <param name="domain">domain</param>
/// <param name="bindingProtocol">协议头如 http/https默认为http</param>
/// <returns>成功返回True,失败返回false</returns>
public static bool AddHostBinding(string siteName, string ip, string port, string domain, string bindingProtocol = "http")
{
try
{
using (ServerManager mgr = new ServerManager())
{
string binginfo = string.Format("{0}:{1}:{2}", ip, port, domain).ToLower();
BindingCollection binding = mgr.Sites\[siteName\].Bindings;
binding.Add(binginfo, bindingProtocol);
mgr.CommitChanges();
}
}
catch (Exception)
{
return false;
}
return true;
}
/// <summary>
/// 删除绑定信息
/// </summary>
/// <param name="siteName">网站名</param>
/// <param name="ip">ip</param>
/// <param name="port">port</param>
/// <param name="domain">domain</param>
/// <returns>成功返回True,失败返回false</returns>
public static bool DeleteHostBinding(string siteName, string ip, string port, string domain)
{
try
{
using (ServerManager mgr = new ServerManager())
{
string binginfo = string.Format("{0}:{1}:{2}", ip, port, domain).ToLower();
foreach (Binding item in mgr.Sites\[siteName\].Bindings)
{
if (item.BindingInformation == binginfo)
{
mgr.Sites\[siteName\].Bindings.Remove(item);
break;
}
}
mgr.CommitChanges();
}
}
catch (Exception)
{
return false;
}
return true;
}
#endregion
}
}
调取代码
using AutoIIS.Helper;
using Microsoft.Web.Administration;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace AutoIIS
{
public partial class Index : Form
{
public Index()
{
InitializeComponent();
}
private void Index\_Load(object sender, EventArgs e)
{
}
//添加默认页
private void button1\_Click(object sender, EventArgs e)
{
richTextBox1.Text += IISHelper.AddDefaultDocument("苏飞论坛", txtdefault.Text.Trim());
}
//创建网站
private void button2\_Click(object sender, EventArgs e)
{
richTextBox1.Text += IISHelper.CreateSite(txtsite.Text.Trim(), txtdomain.Text.Trim(), txtfile.Text.Trim());
}
//删除默认文档
private void button3\_Click(object sender, EventArgs e)
{
richTextBox1.Text += IISHelper.DeleteDefaultDocument("苏飞论坛", txtdefault.Text.Trim());
}
//删除网站
private void button4\_Click(object sender, EventArgs e)
{
richTextBox1.Text += IISHelper.DeleteSite(txtsite.Text.Trim());
}
//删除
private void button6\_Click(object sender, EventArgs e)
{
richTextBox1.Text += IISHelper.DeleteVDir(txtsite.Text.Trim(), txtxuniname.Text.Trim());
}
//添加
private void button5\_Click(object sender, EventArgs e)
{
richTextBox1.Text += IISHelper.CreateVDir(txtsite.Text.Trim(), txtxuniname.Text.Trim(), txtxunipath.Text.Trim());
}
//启动
private void button7\_Click(object sender, EventArgs e)
{
richTextBox1.Text += IISHelper.Start(txtsite.Text.Trim());
}
//暂停
private void button8\_Click(object sender, EventArgs e)
{
richTextBox1.Text += IISHelper.Stop(txtsite.Text.Trim());
}
private void button9\_Click(object sender, EventArgs e)
{
Site site = IISHelper.GetSiteInfo(txtsite.Text.Trim());
richTextBox1.Text += "网站名:" + site.Name + "\\r\\n";
richTextBox1.Text += "网站状态:" + site.State.ToString() + "\\r\\n";
foreach (var item in site.Bindings)
{
richTextBox1.Text += "host:" + item.Host + "\\r\\n";
richTextBox1.Text += "bind:" + item.BindingInformation.ToString() + "\\r\\n";
}
richTextBox1.Text += "网站状态:" + site.Applications.ToString().ToString() + "\\r\\n";
}
//添加
private void button10\_Click(object sender, EventArgs e)
{
string\[\] strlist = txtdomain.Text.Trim().Split(':');
richTextBox1.Text += IISHelper.AddHostBinding(txtsite.Text.Trim(), strlist\[0\], strlist\[1\], strlist\[2\]);
}
//删除
private void button11\_Click(object sender, EventArgs e)
{
string\[\] strlist = txtdomain.Text.Trim().Split(':');
richTextBox1.Text += IISHelper.DeleteHostBinding(txtsite.Text.Trim(), strlist\[0\], strlist\[1\], strlist\[2\]);
}
}
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章