亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 編程設計 > 正文

用C#操縱IIS

2020-07-14 13:42:35
字體:
來源:轉載
供稿:網友
using System;
using System.DirectoryServices;
using System.Collections;
using System.Text.RegularExpressions;
using System.Text;


/**
* @author 吳海燕
* @email wuhy80-usual@yahoo.com
* 2004-6-25 第一版
*/
namespace Wuhy.ToolBox
{
/// <summary>
/// 這個類是靜態類。用來實現管理IIS的基本操作。
/// 管理IIS有兩種方式,一是ADSI,一是WMI。由于系統限制的原因,只好選擇使用ADSI實現功能。
/// 這是一個遺憾。只有等到只有使用IIS 6的時候,才有可能使用WMI來管理系統
/// 不過有一個問題就是,我現在也覺得這樣的一個方法在本地執行會比較的好。最好不要遠程執行。
/// 因為那樣需要占用相當數量的帶寬,即使要遠程執行,也是推薦在同一個網段里面執行
/// </summary>
public class IISAdminLib
{
#region UserName,Password,HostName的定義
public static string HostName
{
get
{
return hostName;
}
set
{
hostName = value;
}
}


public static string UserName
{
get
{
return userName;
}
set
{
userName = value;
}
}


public static string Password
{
get
{
return password;
}
set
{
if(UserName.Length <= 1)
{
throw new ArgumentException("還沒有指定好用戶名。請先指定用戶名");
}


password = value;
}
}


public static void RemoteConfig(string hostName, string userName, string password)
{
HostName = hostName;
UserName = userName;
Password = password;
}


private static string hostName = "localhost";
private static string userName;
private static string password;
#endregion


#region 根據路徑構造Entry的方法
/// <summary>
/// 根據是否有用戶名來判斷是否是遠程服務器。
/// 然后再構造出不同的DirectoryEntry出來
/// </summary>
/// <param name="entPath">DirectoryEntry的路徑</param>
/// <returns>返回的是DirectoryEntry實例</returns>
public static DirectoryEntry GetDirectoryEntry(string entPath)
{
DirectoryEntry ent;


if(UserName == null)
{
ent = new DirectoryEntry(entPath);
}
else
{
// ent = new DirectoryEntry(entPath, HostName+"//"+UserName, Password, AuthenticationTypes.Secure);
ent = new DirectoryEntry(entPath, UserName, Password, AuthenticationTypes.Secure);
}


return ent;
}
#endregion


#region 添加,刪除網站的方法
/// <summary>
/// 創建一個新的網站。根據傳過來的信息進行配置
/// </summary>
/// <param name="siteInfo">存儲的是新網站的信息</param>
public static void CreateNewWebSite(NewWebSiteInfo siteInfo)
{
if(! EnsureNewSiteEnavaible(siteInfo.BindString))
{
throw new DuplicatedWebSiteException("已經有了這樣的網站了。" + Environment.NewLine + siteInfo.BindString);
}


string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry rootEntry = GetDirectoryEntry(entPath);


string newSiteNum = GetNewWebSiteID();
DirectoryEntry newSiteEntry = rootEntry.Children.Add(newSiteNum, "IIsWebServer");
newSiteEntry.CommitChanges();


newSiteEntry.Properties["ServerBindings"].Value = siteInfo.BindString;
newSiteEntry.Properties["ServerComment"].Value = siteInfo.CommentOfWebSite;
newSiteEntry.CommitChanges();


DirectoryEntry vdEntry = newSiteEntry.Children.Add("root", "IIsWebVirtualDir");
vdEntry.CommitChanges();


vdEntry.Properties["Path"].Value = siteInfo.WebPath;
vdEntry.CommitChanges();
}


/// <summary>
/// 刪除一個網站。根據網站名稱刪除。
/// </summary>
/// <param name="siteName">網站名稱</param>
public static void DeleteWebSiteByName(string siteName)
{
string siteNum = GetWebSiteNum(siteName);
string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum);
DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath);


string rootPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry rootEntry = GetDirectoryEntry(rootPath);


rootEntry.Children.Remove(siteEntry);
rootEntry.CommitChanges();
}
#endregion


#region Start和Stop網站的方法
public static void StartWebSite(string siteName)
{
string siteNum = GetWebSiteNum(siteName);
string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum);
DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath);


siteEntry.Invoke("Start", new object[] {});
}


public static void StopWebSite(string siteName)
{
string siteNum = GetWebSiteNum(siteName);
string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum);
DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath);


siteEntry.Invoke("Stop", new object[] {});
}
#endregion


#region 確認網站是否相同
/// <summary>
/// 確定一個新的網站與現有的網站沒有相同的。
/// 這樣防止將非法的數據存放到IIS里面去
/// </summary>
/// <param name="bindStr">網站邦定信息</param>
/// <returns>真為可以創建,假為不可以創建</returns>
public static bool EnsureNewSiteEnavaible(string bindStr)
{
string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry ent = GetDirectoryEntry(entPath);


foreach(DirectoryEntry child in ent.Children)
{
if(child.SchemaClassName == "IIsWebServer")
{
if(child.Properties["ServerBindings"].Value != null)
{
if(child.Properties["ServerBindings"].Value.ToString() == bindStr)
{
return false;
}
}
}
}


return true;
}
#endregion


#region 獲取一個網站編號的方法
/// <summary>
/// 獲取一個網站的編號。根據網站的ServerBindings或者ServerComment來確定網站編號
/// </summary>
/// <param name="siteName"></param>
/// <returns>返回網站的編號</returns>
/// <exception cref="NotFoundWebSiteException">表示沒有找到網站</exception>
public static string GetWebSiteNum(string siteName)
{
Regex regex = new Regex(siteName);
string tmpStr;


string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry ent = GetDirectoryEntry(entPath);


foreach(DirectoryEntry child in ent.Children)
{
if(child.SchemaClassName == "IIsWebServer")
{
if(child.Properties["ServerBindings"].Value != null)
{
tmpStr = child.Properties["ServerBindings"].Value.ToString();
if(regex.Match(tmpStr).Success)
{
return child.Name;
}
}


if(child.Properties["ServerComment"].Value != null)
{
tmpStr = child.Properties["ServerComment"].Value.ToString();
if(regex.Match(tmpStr).Success)
{
return child.Name;
}
}
}
}


throw new NotFoundWebSiteException("沒有找到我們想要的站點" + siteName);
}
#endregion


#region 獲取新網站id的方法
/// <summary>
/// 獲取網站系統里面可以使用的最小的ID。
/// 這是因為每個網站都需要有一個唯一的編號,而且這個編號越小越好。
/// 這里面的算法經過了測試是沒有問題的。
/// </summary>
/// <returns>最小的id</returns>
public static string GetNewWebSiteID()
{
ArrayList list = new ArrayList();
string tmpStr;


string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry ent = GetDirectoryEntry(entPath);
 
 
foreach(DirectoryEntry child in ent.Children)
{
if(child.SchemaClassName == "IIsWebServer")
{
tmpStr = child.Name.ToString();
list.Add(Convert.ToInt32(tmpStr));
}
}
 
 
list.Sort();
 
 
int i = 1;
foreach(int j in list)
{
if(i == j)
{
i++;
}
}
 
 
return i.ToString();
}
#endregion
}
 
 
#region 新網站信息結構體
public struct NewWebSiteInfo
{
private string hostIP; // The Hosts IP Address
private string portNum; // The New Web Sites Port.generally is "80"
private string descOfWebSite; // 網站表示。一般為網站的網站名。例如"www.dns.com.cn"
private string commentOfWebSite;// 網站注釋。一般也為網站的網站名。
private string webPath; // 網站的主目錄。例如"e:/tmp"
 
 
public NewWebSiteInfo(string hostIP, string portNum, string descOfWebSite, string commentOfWebSite, string webPath)
{
this.hostIP = hostIP;
this.portNum = portNum;
this.descOfWebSite = descOfWebSite;
this.commentOfWebSite = commentOfWebSite;
this.webPath = webPath;
}
 
 
public string BindString
{
get
{
return String.Format("{0}:{1}:{2}", hostIP, portNum, descOfWebSite);
}
}
 
 
public string CommentOfWebSite
{
get
{
return commentOfWebSite;
}
}
 
 
public string WebPath
{
get
{
return webPath;
}
}
}
#endregion
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品激情在线| 欧美在线激情网| 欧美亚洲另类激情另类| 亚洲网站在线播放| 在线观看精品国产视频| 国产精品海角社区在线观看| 亚洲高清久久久久久| 国产精品91一区| 久久精品欧美视频| 国产精品久久久久久中文字| 中文字幕日韩综合av| 91精品国产综合久久香蕉| 欧美成人午夜激情视频| 亚洲成人黄色网址| 中文字幕av一区| 一区二区三区回区在观看免费视频| 久久露脸国产精品| 伊人一区二区三区久久精品| 亚洲激情在线观看视频免费| 国产成人高清激情视频在线观看| 亚洲欧美在线免费观看| 中文国产成人精品久久一| 这里只有精品在线播放| 久久九九免费视频| 亚洲黄页视频免费观看| 欧洲日韩成人av| 日韩欧美在线视频观看| 欧美黑人性猛交| 国产精品福利在线观看网址| 中文字幕欧美日韩| 亚洲成色www8888| 久久99久久亚洲国产| 亚洲成av人影院在线观看| 国产97在线|亚洲| 久久综合五月天| 欧美一级免费看| 国产日韩在线视频| 亚洲国产精品人人爽夜夜爽| 日韩精品免费一线在线观看| 欧美黑人性生活视频| 亚洲一区二区三| 国产精品成人va在线观看| 久久久国产精彩视频美女艺术照福利| 亚洲www在线观看| 国产精品高潮呻吟视频| 这里只有视频精品| 欧美激情一区二区三区成人| 在线观看免费高清视频97| 欧美午夜美女看片| 欧美日韩国产在线播放| 欧美成人精品xxx| 欧美精品日韩www.p站| 久久精品国产电影| 91精品国产高清自在线看超| 欧美在线xxx| 亚洲视频电影图片偷拍一区| 国外成人在线直播| 久久这里只有精品视频首页| 欧美日韩国产在线播放| 欧美激情视频在线免费观看 欧美视频免费一| 日韩免费在线观看视频| 亚洲精品久久久一区二区三区| 国产在线98福利播放视频| 久久精品色欧美aⅴ一区二区| 久久亚洲国产精品成人av秋霞| 中文字幕精品一区久久久久| 97视频国产在线| 亚洲第一免费网站| 成人xvideos免费视频| 成人a在线观看| 国产成人精品免费久久久久| 国产91色在线播放| 一区二区中文字幕| 亚洲成av人乱码色午夜| 日韩精品中文字幕在线| 亚洲国产精品久久久| 成人高清视频观看www| 日韩av片免费在线观看| 久久天堂av综合合色| 久久久91精品国产一区不卡| 丝袜一区二区三区| 精品视频中文字幕| 精品久久久久久久久久久久久久| 日韩在线观看免费| 色综合久综合久久综合久鬼88| 欧美自拍视频在线| 97碰碰碰免费色视频| 亚洲a一级视频| 欧美日韩免费在线| 亚洲欧美在线免费观看| 国产日产欧美精品| 久久91精品国产| 久久久黄色av| 亚洲欧洲国产精品| 欧美巨乳美女视频| 午夜精品久久久久久久男人的天堂| 日韩国产欧美精品一区二区三区| 成人福利网站在线观看11| 91网站免费观看| 欧美性猛交xxxx久久久| 欧美日韩美女视频| 超薄丝袜一区二区| 成人欧美在线视频| 亚洲影院色在线观看免费| 国产成人精品电影| 一个人看的www欧美| 国产综合香蕉五月婷在线| 国产精品444| 国产成人精品久久二区二区91| 欧美日本黄视频| 欧美激情免费看| 日韩欧美aaa| 中文字幕一区二区三区电影| 日韩在线观看免费全| 亚洲欧美在线一区| 三级精品视频久久久久| 疯狂蹂躏欧美一区二区精品| 欧美性xxxxxx| 久久成人人人人精品欧| 国产精品第三页| 欧美最顶级的aⅴ艳星| 欧美在线性爱视频| 欧美日韩午夜剧场| 中文字幕不卡av| 这里只有精品视频| 少妇高潮久久77777| 精品国产乱码久久久久久婷婷| 国产成人小视频在线观看| 国产精品啪视频| 日韩成人av网| 精品久久久国产精品999| 亚洲嫩模很污视频| 亚洲激情第一页| 日韩大片免费观看视频播放| 91精品国产高清久久久久久91| 一级做a爰片久久毛片美女图片| 国产综合在线视频| 在线亚洲欧美视频| 中文字幕日韩欧美精品在线观看| 久久艳片www.17c.com| 欧美老少做受xxxx高潮| 狠狠躁18三区二区一区| 国产va免费精品高清在线| 日韩精品小视频| 亚洲一区制服诱惑| 欧美乱大交xxxxx| 欧美日韩精品国产| 精品高清一区二区三区| 亚洲欧美三级伦理| 国产欧美中文字幕| 国产成人极品视频| 日韩av网站大全| 国产狼人综合免费视频| 91夜夜未满十八勿入爽爽影院| 2025国产精品视频| 日本久久亚洲电影| 亚洲欧美色婷婷| 国产欧美日韩精品丝袜高跟鞋| 日韩成人在线免费观看| 九九久久久久久久久激情| 疯狂蹂躏欧美一区二区精品| 欧美高清自拍一区| 欧美激情三级免费| 欧洲亚洲女同hd|