IISServerState
using System;
using System.DirectoryServices;
using System.Collections;
namespace OPS.Component
{
/**//// <summary>
/// IISWebServer的状态
/// </summary>
public enum IISServerState
{
/**//// <summary>
///
/// </summary>
Starting = 1,
/**//// <summary>
///
/// </summary>
Started = 2,
/**//// <summary>
///
/// </summary>
Stopping = 3,
/**//// <summary>
///
/// </summary>
Stopped = 4,
/**//// <summary>
///
/// </summary>
Pausing = 5,
/**//// <summary>
///
/// </summary>
Paused = 6,
/**//// <summary>
///
/// </summary>
Continuing = 7
}
}
IISWebServer
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices;
namespace OPS.Component
{
/**//// <summary>
/// IISWebServer
/// </summary>
public class IISWebServer
{
/**//**/
/**//// <summary>
///
/// </summary>
internal int index = -1;
/**//**/
/**//// <summary>
///
/// </summary>
public IISWebVirtualDirCollection WebVirtualDirs;
/**//**/
/**//// <summary>
/// 网站说明
/// </summary>
public string ServerComment = "Way";
/**//**/
/**//// <summary>
/// 脚本支持
/// </summary>
public bool AccessScript = true;
/**//**/
/**//// <summary>
/// 读取
/// </summary>
public bool AccessRead = true;
/**//**/
/**//// <summary>
/// 物理路径
/// </summary>
public string Path = @"c:\";
/**//**/
/**//// <summary>
/// 端口
/// </summary>
public int Port = 80;
/**//**/
/**//// <summary>
/// 目录浏览
/// </summary>
public bool EnableDirBrowsing = false;
/**//**/
/**//// <summary>
/// 默认文档
/// </summary>
public string DefaultDoc = "index.aspx";
/**//**/
/**//// <summary>
/// 使用默认文档
/// </summary>
public bool EnableDefaultDoc = true;
/**//**/
/**//// <summary>
/// IISWebServer的状态
/// </summary>
public IISServerState ServerState
{
get
{
DirectoryEntry server = IISManagement.returnIISWebserver(this.index);
if (server == null)
throw (new Exception("找不到此IISWebServer"));
switch (server.Properties["ServerState"][0].ToString())
{
case "2":
return IISServerState.Started;
case "4":
return IISServerState.Stopped;
case "6":
return IISServerState.Paused;
}
return IISServerState.Stopped;
}
}
/**//**/
/**//// <summary>
/// 停止IISWebServer
/// </summary>
public void Stop()
{
DirectoryEntry Server;
if (index == -1)
throw (new Exception("在IIS找不到此IISWebServer!"));
try
{
Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
if (Server != null)
Server.Invoke("stop", new object[0]);
else
throw (new Exception("在IIS找不到此IISWebServer!"));
}
catch
{
throw (new Exception("在IIS找不到此IISWebServer!"));
}
}
/**//**/
/**//// <summary>
/// 把基本信息的更改更新到IIS
/// </summary>
public void CommitChanges()
{
IISManagement.EditIISWebServer(this);
}
/**//**/
/**//// <summary>
/// 启动IISWebServer
/// </summary>
public void Start()
{
if (index == -1)
throw (new Exception("在IIS找不到此IISWebServer!"));
DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
DirectoryEntry Server;
IEnumerator ie = Service.Children.GetEnumerator();
while (ie.MoveNext())
{
Server = (DirectoryEntry)ie.Current;
if (Server.SchemaClassName == "IIsWebServer")
{
if (Server.Properties["Serverbindings"][0].ToString() == ":" + this.Port + ":")
{
Server.Invoke("stop", new object[0]);
}
}
}
try
{
Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
if (Server != null)
Server.Invoke("start", new object[0]);
else
throw (new Exception("在IIS找不到此IISWebServer!"));
}
catch
{
throw (new Exception("在IIS找不到此IISWebServer!"));
}
}
/**//**/
/**//// <summary>
///
/// </summary>
public IISWebServer()
{
WebVirtualDirs = new IISWebVirtualDirCollection(this);
}
}
}
IISWebServerCollection
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace OPS.Component
{
/**//// <summary>
/// IISWebServerCollection
/// </summary>
public class IISWebServerCollection : CollectionBase
{
/**//// <summary>
///
/// </summary>
public IISWebServer this[int Index]
{
get
{
return (IISWebServer)this.List[Index];
}
}
/**//**/
/**//// <summary>
///
/// </summary>
public IISWebServer this[string ServerComment]
{
get
{
ServerComment = ServerComment.ToLower().Trim();
IISWebServer list;
for (int i = 0; i < this.List.Count; i++)
{
list = (IISWebServer)this.List[i];
if (list.ServerComment.ToLower().Trim() == ServerComment)
return list;
}
return null;
}
}
internal void Add_(IISWebServer WebServer)
{
this.List.Add(WebServer);
}
/**//**/
/**//// <summary>
///
/// </summary>
/// <param name="WebServer"></param>
public void Add(IISWebServer WebServer)
{
try
{
this.List.Add(WebServer);
IISManagement.CreateIISWebServer(WebServer);
}
catch
{
throw (new Exception("发生意外错误,可能是某节点将该节点的上级节点作为它自己的子级插入"));
}
}
/**//**/
/**//// <summary>
/// 是否包含指定的网站
/// </summary>
/// <param name="ServerComment"></param>
/// <returns></returns>
public bool Contains(string ServerComment)
{
ServerComment = ServerComment.ToLower().Trim();
for (int i = 0; i < this.List.Count; i++)
{
IISWebServer server = this[i];
if (server.ServerComment.ToLower().Trim() == ServerComment)
return true;
}
return false;
}
/**//**/
/**//// <summary>
/// 是否包含指定的网站
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public bool Contains(int index)
{
for (int i = 0; i < this.List.Count; i++)
{
IISWebServer server = this[i];
if (server.index == index)
return true;
}
return false;
}
/**//**/
/**//// <summary>
///
/// </summary>
/// <param name="WebServers"></param>
public void AddRange(IISWebServer[] WebServers)
{
for (int i = 0; i <= WebServers.GetUpperBound(0); i++)
{
Add(WebServers[i]);
}
}
/**//**/
/**//// <summary>
///
/// </summary>
/// <param name="WebServer"></param>
public void Remove(IISWebServer WebServer)
{
for (int i = 0; i < this.List.Count; i++)
{
if ((IISWebServer)this.List[i] == WebServer)
{
this.List.RemoveAt(i);
return;
}
}
IISManagement.RemoveIISWebServer(WebServer.index);
}
}
}
IISWebVirtualDir
using System;
using System.Collections.Generic;
using System.Text;
namespace OPS.Component
{
/**//// <summary>
/// IISWebVirtualDir
/// </summary>
public class IISWebVirtualDir
{
/**//**/
/**//// <summary>
///
/// </summary>
public IISWebServer Parent = null;
/**//**/
/**//// <summary>
/// 虚拟目录名称
360docimg_501_ /// </summary>
360docimg_502_ public string Name = "Way";
360docimg_503_360docimg_504_ /**//**/
360docimg_505_360docimg_506_ /**//// <summary>
360docimg_507_ /// 读取
360docimg_508_ /// </summary>
360docimg_509_ public bool AccessRead = true;
360docimg_510_360docimg_511_ /**//**/
360docimg_512_360docimg_513_ /**//// <summary>
360docimg_514_ /// 脚本支持
360docimg_515_ /// </summary>
360docimg_516_ public bool AccessScript = true;
360docimg_517_360docimg_518_ /**//**/
360docimg_519_360docimg_520_ /**//// <summary>
360docimg_521_ /// 物理路径
360docimg_522_ /// </summary>
360docimg_523_ public string Path = @"c:\";
360docimg_524_360docimg_525_ /**//**/
360docimg_526_360docimg_527_ /**//// <summary>
360docimg_528_ /// 默认文档
360docimg_529_ /// </summary>
360docimg_530_ public string DefaultDoc = "index.aspx";
360docimg_531_360docimg_532_ /**//**/
360docimg_533_360docimg_534_ /**//// <summary>
360docimg_535_ /// 使用默认文档
360docimg_536_ /// </summary>
360docimg_537_ public bool EnableDefaultDoc = true;
360docimg_538_360docimg_539_ /**//**/
360docimg_540_360docimg_541_ /**//// <summary>
360docimg_542_ /// 所属的网站的网站说明
360docimg_543_ /// </summary>
360docimg_544_ public string WebServer = "";
360docimg_545_
360docimg_546_360docimg_547_ /**//**/
360docimg_548_360docimg_549_ /**//// <summary>
360docimg_550_ ///
360docimg_551_ /// </summary>
360docimg_552_ /// <param name="WebServerName"></param>
360docimg_553_ public IISWebVirtualDir(string WebServerName)
360docimg_554_360docimg_555_ 360docimg_556_{
360docimg_557_ if (WebServerName.ToString() == "")
360docimg_558_ throw (new Exception("WebServerName不能为空!"));
360docimg_559_ this.WebServer = WebServerName;
360docimg_560_ }
360docimg_561_360docimg_562_ /**//**/
360docimg_563_360docimg_564_ /**//// <summary>
360docimg_565_ ///
360docimg_566_ /// </summary>
360docimg_567_ public IISWebVirtualDir()
360docimg_568_360docimg_569_ 360docimg_570_{
360docimg_571_
360docimg_572_ }
360docimg_573_ }
360docimg_574_}
360docimg_575_ 360docimg_576_360docimg_577_IISWebVirtualDirCollection
360docimg_578_using System;
360docimg_579_using System.Collections;
360docimg_580_using System.Collections.Generic;
360docimg_581_using System.Text;
360docimg_582_
360docimg_583_namespace OPS.Component
360docimg_584_360docimg_585_360docimg_586_{
360docimg_587_360docimg_588_ /**//// <summary>
360docimg_589_ /// IISWebVirtualDirCollection
360docimg_590_ /// </summary>
360docimg_591_ public class IISWebVirtualDirCollection : CollectionBase
360docimg_592_360docimg_593_ 360docimg_594_{
360docimg_595_360docimg_596_ /**//**/
360docimg_597_360docimg_598_ /**//// <summary>
360docimg_599_ ///
360docimg_600_ /// </summary>
360docimg_601_ public IISWebServer Parent = null;
360docimg_602_
360docimg_603_360docimg_604_ /**//**/
360docimg_605_360docimg_606_ /**//// <summary>
360docimg_607_ ///
360docimg_608_ /// </summary>
360docimg_609_ public IISWebVirtualDir this[int Index]
360docimg_610_360docimg_611_ 360docimg_612_{
360docimg_613_ get
360docimg_614_360docimg_615_ 360docimg_616_{
360docimg_617_ return (IISWebVirtualDir)this.List[Index];
360docimg_618_
360docimg_619_ }
360docimg_620_ }
360docimg_621_
360docimg_622_360docimg_623_ /**//**/
360docimg_624_360docimg_625_ /**//// <summary>
360docimg_626_ ///
360docimg_627_ /// </summary>
360docimg_628_ public IISWebVirtualDir this[string Name]
360docimg_629_360docimg_630_ 360docimg_631_{
360docimg_632_ get
360docimg_633_360docimg_634_ 360docimg_635_{
360docimg_636_ Name = Name.ToLower();
360docimg_637_ IISWebVirtualDir list;
360docimg_638_ for (int i = 0; i < this.List.Count; i++)
360docimg_639_360docimg_640_ 360docimg_641_{
360docimg_642_ list = (IISWebVirtualDir)this.List[i];
360docimg_643_ if (list.Name.ToLower() == Name)
360docimg_644_ return list;
360docimg_645_ }
360docimg_646_ return null;
360docimg_647_ }
360docimg_648_ }
360docimg_649_
360docimg_650_
360docimg_651_ internal void Add_(IISWebVirtualDir WebVirtualDir)
360docimg_652_360docimg_653_ 360docimg_654_{
360docimg_655_ try
360docimg_656_360docimg_657_ 360docimg_658_{
360docimg_659_ this.List.Add(WebVirtualDir);
360docimg_660_ }
360docimg_661_ catch
360docimg_662_360docimg_663_ 360docimg_664_{
360docimg_665_ throw (new Exception("发生意外错误,可能是某节点将该节点的上级节点作为它自己的子级插入"));
360docimg_666_ }
360docimg_667_
360docimg_668_ }
360docimg_669_
360docimg_670_360docimg_671_ /**//**/
360docimg_672_360docimg_673_ /**//// <summary>
360docimg_674_ ///
360docimg_675_ /// </summary>
360docimg_676_ /// <param name="WebVirtualDir"></param>
360docimg_677_ public void Add(IISWebVirtualDir WebVirtualDir)
360docimg_678_360docimg_679_ 360docimg_680_{
360docimg_681_ WebVirtualDir.Parent = this.Parent;
360docimg_682_ try
360docimg_683_360docimg_684_ 360docimg_685_{
360docimg_686_ this.List.Add(WebVirtualDir);
360docimg_687_
360docimg_688_ }
360docimg_689_ catch
360docimg_690_360docimg_691_ 360docimg_692_{
360docimg_693_ throw (new Exception("发生意外错误,可能是某节点将该节点的上级节点作为它自己的子级插入"));
360docimg_694_ }
360docimg_695_ IISManagement.CreateIISWebVirtualDir(WebVirtualDir, true);
360docimg_696_
360docimg_697_ }
360docimg_698_
360docimg_699_360docimg_700_ /**//**/
360docimg_701_360docimg_702_ /**//// <summary>
360docimg_703_ ///
360docimg_704_ /// </summary>
360docimg_705_ /// <param name="WebVirtualDirs"></param>
360docimg_706_ public void AddRange(IISWebVirtualDir[] WebVirtualDirs)
360docimg_707_360docimg_708_ 360docimg_709_{
360docimg_710_ for (int i = 0; i <= WebVirtualDirs.GetUpperBound(0); i++)
360docimg_711_360docimg_712_ 360docimg_713_{
360docimg_714_ Add(WebVirtualDirs[i]);
360docimg_715_ }
360docimg_716_ }
360docimg_717_
360docimg_718_360docimg_719_ /**//**/
360docimg_720_360docimg_721_ /**//// <summary>
360docimg_722_ ///
360docimg_723_ /// </summary>
360docimg_724_ /// <param name="WebVirtualDir"></param>
360docimg_725_ public void Remove(IISWebVirtualDir WebVirtualDir)
360docimg_726_360docimg_727_ 360docimg_728_{
360docimg_729_ for (int i = 0; i < this.List.Count; i++)
360docimg_730_360docimg_731_ 360docimg_732_{
360docimg_733_ if ((IISWebVirtualDir)this.List[i] == WebVirtualDir)
360docimg_734_360docimg_735_ 360docimg_736_{
360docimg_737_ this.List.RemoveAt(i);
360docimg_738_ IISManagement.RemoveIISWebVirtualDir(WebVirtualDir);
360docimg_739_ return;
360docimg_740_ }
360docimg_741_ }
360docimg_742_ }
360docimg_743_
360docimg_744_360docimg_745_ /**//**/
360docimg_746_360docimg_747_ /**//// <summary>
360docimg_748_ ///
360docimg_749_ /// </summary>
360docimg_750_ /// <param name="Parent"></param>
360docimg_751_ public IISWebVirtualDirCollection(IISWebServer Parent)
360docimg_752_360docimg_753_ 360docimg_754_{
360docimg_755_ this.Parent = Parent;
360docimg_756_ }
360docimg_757_ }
360docimg_758_}
360docimg_759_
360docimg_760_360docimg_761_IISManagement
360docimg_762_using System;
360docimg_763_using System.Collections;
360docimg_764_using System.Collections.Generic;
360docimg_765_using System.Text;
360docimg_766_using System.DirectoryServices;
360docimg_767_
360docimg_768_namespace OPS.Component
360docimg_769_360docimg_770_360docimg_771_{
360docimg_772_360docimg_773_ /**//**/
360docimg_774_360docimg_775_ /**//// <summary>
360docimg_776_ /// IISManagement 的摘要说明。
360docimg_777_ /// </summary>
360docimg_778_ public class IISManagement
360docimg_779_360docimg_780_ 360docimg_781_{
360docimg_782_360docimg_783_ /**//**/
360docimg_784_360docimg_785_ /**//// <summary>
360docimg_786_ ///
360docimg_787_ /// </summary>
360docimg_788_ public IISWebServerCollection WebServers = new IISWebServerCollection();
360docimg_789_ internal static string Machinename = "localhost";
360docimg_790_360docimg_791_ /**//**/
360docimg_792_360docimg_793_ /**//// <summary>
360docimg_794_ ///
360docimg_795_ /// </summary>
360docimg_796_ public IISManagement()
360docimg_797_360docimg_798_ 360docimg_799_{
360docimg_800_ start();
360docimg_801_ }
360docimg_802_
360docimg_803_
360docimg_804_360docimg_805_ /**//**/
360docimg_806_360docimg_807_ /**//// <summary>
360docimg_808_ ///
360docimg_809_ /// </summary>
360docimg_810_ /// <param name="MachineName">机器名,默认值为localhost</param>
360docimg_811_ public IISManagement(string MachineName)
360docimg_812_360docimg_813_ 360docimg_814_{
360docimg_815_ if (MachineName.ToString() != "")
360docimg_816_ Machinename = MachineName;
360docimg_817_ start();
360docimg_818_ }
360docimg_819_
360docimg_820_ private void start()
360docimg_821_360docimg_822_ 360docimg_823_{
360docimg_824_
360docimg_825_ DirectoryEntry Service = new DirectoryEntry("IIS://" + Machinename + "/W3SVC");
360docimg_826_ DirectoryEntry Server;
360docimg_827_ DirectoryEntry Root = null;
360docimg_828_ DirectoryEntry VirDir;
360docimg_829_ IEnumerator ie = Service.Children.GetEnumerator();
360docimg_830_ IEnumerator ieRoot;
360docimg_831_ IISWebServer item;
360docimg_832_ IISWebVirtualDir item_virdir;
360docimg_833_ bool finded = false;
360docimg_834_ while (ie.MoveNext())
360docimg_835_360docimg_836_ 360docimg_837_{
360docimg_838_ Server = (DirectoryEntry)ie.Current;
360docimg_839_ if (Server.SchemaClassName == "IIsWebServer")
360docimg_840_360docimg_841_ 360docimg_842_{
360docimg_843_ item = new IISWebServer();
360docimg_844_ item.index = Convert.ToInt32(Server.Name);
360docimg_845_
360docimg_846_ item.ServerComment = (string)Server.Properties["ServerComment"][0];
360docimg_847_ item.AccessRead = (bool)Server.Properties["AccessRead"][0];
360docimg_848_ item.AccessScript = (bool)Server.Properties["AccessScript"][0];
360docimg_849_ item.DefaultDoc = (string)Server.Properties["DefaultDoc"][0];
360docimg_850_ item.EnableDefaultDoc = (bool)Server.Properties["EnableDefaultDoc"][0];
360docimg_851_ item.EnableDirBrowsing = (bool)Server.Properties["EnableDirBrowsing"][0];
360docimg_852_ ieRoot = Server.Children.GetEnumerator();
360docimg_853_
360docimg_854_ while (ieRoot.MoveNext())
360docimg_855_360docimg_856_ 360docimg_857_{
360docimg_858_ Root = (DirectoryEntry)ieRoot.Current;
360docimg_859_ if (Root.SchemaClassName == "IIsWebVirtualDir")
360docimg_860_360docimg_861_ 360docimg_862_{
360docimg_863_ finded = true;
360docimg_864_ break;
360docimg_865_ }
360docimg_866_ }
360docimg_867_ if (finded)
360docimg_868_360docimg_869_ 360docimg_870_{
360docimg_871_ item.Path = Root.Properties["path"][0].ToString();
360docimg_872_ }
360docimg_873_
360docimg_874_ item.Port = Convert.ToInt32(((string)Server.Properties["Serverbindings"][0]).Substring(1, ((string)Server.Properties["Serverbindings"][0]).Length - 2));
360docimg_875_ this.WebServers.Add_(item);
360docimg_876_ ieRoot = Root.Children.GetEnumerator();
360docimg_877_ while (ieRoot.MoveNext())
360docimg_878_360docimg_879_ 360docimg_880_{
360docimg_881_ VirDir = (DirectoryEntry)ieRoot.Current;
360docimg_882_ if (VirDir.SchemaClassName != "IIsWebVirtualDir" && VirDir.SchemaClassName != "IIsWebDirectory")
360docimg_883_ continue;
360docimg_884_ item_virdir = new IISWebVirtualDir(item.ServerComment);
360docimg_885_ item_virdir.Name = VirDir.Name;
360docimg_886_ item_virdir.AccessRead = (bool)VirDir.Properties["AccessRead"][0];
360docimg_887_ item_virdir.AccessScript = (bool)VirDir.Properties["AccessScript"][0];
360docimg_888_ item_virdir.DefaultDoc = (string)VirDir.Properties["DefaultDoc"][0];
360docimg_889_ item_virdir.EnableDefaultDoc = (bool)VirDir.Properties["EnableDefaultDoc"][0];
360docimg_890_ if (VirDir.SchemaClassName == "IIsWebVirtualDir")
360docimg_891_360docimg_892_ 360docimg_893_{
360docimg_894_ item_virdir.Path = (string)VirDir.Properties["Path"][0];
360docimg_895_ }
360docimg_896_ else if (VirDir.SchemaClassName == "IIsWebDirectory")
360docimg_897_360docimg_898_ 360docimg_899_{
360docimg_900_ item_virdir.Path = Root.Properties["Path"][0] + @"\" + VirDir.Name;
360docimg_901_ }
360docimg_902_ item.WebVirtualDirs.Add_(item_virdir);
360docimg_903_ }
360docimg_904_ }
360docimg_905_ }
360docimg_906_ }
360docimg_907_
360docimg_908_360docimg_909_ /**//**/
360docimg_910_360docimg_911_ /**//// <summary>
360docimg_912_ /// 创建站点
360docimg_913_ /// </summary>
360docimg_914_ /// <param name="iisServer"></param>
360docimg_915_ public static void CreateIISWebServer(IISWebServer iisServer)
360docimg_916_360docimg_917_ 360docimg_918_{
360docimg_919_ if (iisServer.ServerComment.ToString() == "")
360docimg_920_ throw (new Exception("IISWebServer的ServerComment不能为空!"));
360docimg_921_ DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
360docimg_922_ DirectoryEntry Server;
360docimg_923_ int i = 0;
360docimg_924_ IEnumerator ie = Service.Children.GetEnumerator();
360docimg_925_
360docimg_926_ while (ie.MoveNext())
360docimg_927_360docimg_928_ 360docimg_929_{
360docimg_930_ Server = (DirectoryEntry)ie.Current;
360docimg_931_ if (Server.SchemaClassName == "IIsWebServer")
360docimg_932_360docimg_933_ 360docimg_934_{
360docimg_935_ if (Convert.ToInt32(Server.Name) > i)
360docimg_936_ i = Convert.ToInt32(Server.Name);
360docimg_937_ // if( Server.Properties["Serverbindings"][0].ToString() == ":" + iisServer.Port + ":" )
360docimg_938_ // {
360docimg_939_ // Server.Invoke("stop",new object[0]);
360docimg_940_ // }
360docimg_941_ }
360docimg_942_ }
360docimg_943_
360docimg_944_ i++;
360docimg_945_
360docimg_946_ try
360docimg_947_360docimg_948_ 360docimg_949_{
360docimg_950_ iisServer.index = i;
360docimg_951_ Server = Service.Children.Add(i.ToString(), "IIsWebServer");
360docimg_952_ Server.Properties["ServerComment"][0] = iisServer.ServerComment;
360docimg_953_ Server.Properties["Serverbindings"].Add(":" + iisServer.Port + ":");
360docimg_954_ Server.Properties["AccessScript"][0] = iisServer.AccessScript;
360docimg_955_ Server.Properties["AccessRead"][0] = iisServer.AccessRead;
360docimg_956_ Server.Properties["EnableDirBrowsing"][0] = iisServer.EnableDirBrowsing;
360docimg_957_ Server.Properties["DefaultDoc"][0] = iisServer.DefaultDoc;
360docimg_958_ Server.Properties["EnableDefaultDoc"][0] = iisServer.EnableDefaultDoc;
360docimg_959_
360docimg_960_ DirectoryEntry root = Server.Children.Add("Root", "IIsWebVirtualDir");
360docimg_961_ root.Properties["path"][0] = iisServer.Path;
360docimg_962_
360docimg_963_
360docimg_964_ Service.CommitChanges();
360docimg_965_ Server.CommitChanges();
360docimg_966_ root.CommitChanges();
360docimg_967_360docimg_968_ root.Invoke("AppCreate2", new object[1] 360docimg_969_{ 2 });
360docimg_970_ //Server.Invoke("start",new object[0]);
360docimg_971_ }
360docimg_972_ catch (Exception es)
360docimg_973_360docimg_974_ 360docimg_975_{
360docimg_976_ throw (es);
360docimg_977_ }
360docimg_978_ }
360docimg_979_360docimg_980_ /**//**/
360docimg_981_360docimg_982_ /**//// <summary>
360docimg_983_ /// 删除IISWebServer
360docimg_984_ /// </summary>
360docimg_985_ public static void RemoveIISWebServer(string ServerComment)
360docimg_986_360docimg_987_ 360docimg_988_{
360docimg_989_ DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
360docimg_990_ DirectoryEntry Server;
360docimg_991_ IEnumerator ie = Service.Children.GetEnumerator();
360docimg_992_
360docimg_993_ ServerComment = ServerComment.ToLower();
360docimg_994_ while (ie.MoveNext())
360docimg_995_360docimg_996_ 360docimg_997_{
360docimg_998_ Server = (DirectoryEntry)ie.Current;
360docimg_999_ if (Server.SchemaClassName == "IIsWebServer")
360docimg_1000_360docimg_1001_ 360docimg_1002_{
360docimg_1003_ if (Server.Properties["ServerComment"][0].ToString().ToLower() == ServerComment)
360docimg_1004_360docimg_1005_ 360docimg_1006_{
360docimg_1007_ Service.Children.Remove(Server);
360docimg_1008_ Service.CommitChanges();
360docimg_1009_ return;
360docimg_1010_ }
360docimg_1011_ }
360docimg_1012_ }
360docimg_1013_ }
360docimg_1014_
360docimg_1015_360docimg_1016_ /**//**/
360docimg_1017_360docimg_1018_ /**//// <summary>
360docimg_1019_ /// 删除IISWebServer
360docimg_1020_ /// </summary>
360docimg_1021_ public static void RemoveIISWebServer(int index)
360docimg_1022_360docimg_1023_ 360docimg_1024_{
360docimg_1025_ DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
360docimg_1026_ try
360docimg_1027_360docimg_1028_ 360docimg_1029_{
360docimg_1030_ DirectoryEntry Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
360docimg_1031_ if (Server != null)
360docimg_1032_360docimg_1033_ 360docimg_1034_{
360docimg_1035_ Service.Children.Remove(Server);
360docimg_1036_ Service.CommitChanges();
360docimg_1037_ }
360docimg_1038_ else
360docimg_1039_360docimg_1040_ 360docimg_1041_{
360docimg_1042_ throw (new Exception("找不到此IISWebServer"));
360docimg_1043_ }
360docimg_1044_ }
360docimg_1045_ catch
360docimg_1046_360docimg_1047_ 360docimg_1048_{
360docimg_1049_ throw (new Exception("找不到此IISWebServer"));
360docimg_1050_ }
360docimg_1051_ }
360docimg_1052_
360docimg_1053_360docimg_1054_ /**//**/
360docimg_1055_360docimg_1056_ /**//// <summary>
360docimg_1057_ /// 检查是否存在IISWebServer
360docimg_1058_ /// </summary>
360docimg_1059_ /// <param name="ServerComment">网站说明</param>
360docimg_1060_ /// <returns></returns>
360docimg_1061_ public static bool ExistsIISWebServer(string ServerComment)
360docimg_1062_360docimg_1063_ 360docimg_1064_{
360docimg_1065_ ServerComment = ServerComment.Trim();
360docimg_1066_ DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
360docimg_1067_ DirectoryEntry Server = null;
360docimg_1068_ IEnumerator ie = Service.Children.GetEnumerator();
360docimg_1069_
360docimg_1070_ string comment;
360docimg_1071_ while (ie.MoveNext())
360docimg_1072_360docimg_1073_ 360docimg_1074_{
360docimg_1075_ Server = (DirectoryEntry)ie.Current;
360docimg_1076_ if (Server.SchemaClassName == "IIsWebServer")
360docimg_1077_360docimg_1078_ 360docimg_1079_{
360docimg_1080_ comment = Server.Properties["ServerComment"][0].ToString().ToLower().Trim();
360docimg_1081_ if (comment == ServerComment.ToLower())
360docimg_1082_360docimg_1083_ 360docimg_1084_{
360docimg_1085_ return true;
360docimg_1086_ }
360docimg_1087_ }
360docimg_1088_ }
360docimg_1089_
360docimg_1090_ return false;
360docimg_1091_ }
360docimg_1092_360docimg_1093_ /**//**/
360docimg_1094_360docimg_1095_ /**//// <summary>
360docimg_1096_ /// 返回指定的IISWebServer
360docimg_1097_ /// </summary>
360docimg_1098_ /// <param name="ServerComment"></param>
360docimg_1099_ /// <returns></returns>
360docimg_1100_ internal static DirectoryEntry returnIISWebserver(string ServerComment)
360docimg_1101_360docimg_1102_ 360docimg_1103_{
360docimg_1104_ ServerComment = ServerComment.Trim();
360docimg_1105_ DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
360docimg_1106_ DirectoryEntry Server = null;
360docimg_1107_ IEnumerator ie = Service.Children.GetEnumerator();
360docimg_1108_
360docimg_1109_ string comment;
360docimg_1110_ while (ie.MoveNext())
360docimg_1111_360docimg_1112_ 360docimg_1113_{
360docimg_1114_ Server = (DirectoryEntry)ie.Current;
360docimg_1115_ if (Server.SchemaClassName == "IIsWebServer")
360docimg_1116_360docimg_1117_ 360docimg_1118_{
360docimg_1119_ comment = Server.Properties["ServerComment"][0].ToString().ToLower().Trim();
360docimg_1120_ if (comment == ServerComment.ToLower())
360docimg_1121_360docimg_1122_ 360docimg_1123_{
360docimg_1124_ return Server;
360docimg_1125_ }
360docimg_1126_ }
360docimg_1127_ }
360docimg_1128_
360docimg_1129_ return null;
360docimg_1130_ }
360docimg_1131_
360docimg_1132_
360docimg_1133_360docimg_1134_ /**//**/
360docimg_1135_360docimg_1136_ /**//// <summary>
360docimg_1137_ /// 返回指定的IISWebServer
360docimg_1138_ /// </summary>
360docimg_1139_ /// <param name="index"></param>
360docimg_1140_ /// <returns></returns>
360docimg_1141_ internal static DirectoryEntry returnIISWebserver(int index)
360docimg_1142_360docimg_1143_ 360docimg_1144_{
360docimg_1145_ DirectoryEntry Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
360docimg_1146_ try
360docimg_1147_360docimg_1148_ 360docimg_1149_{
360docimg_1150_ IEnumerator ie = Server.Children.GetEnumerator();
360docimg_1151_ return Server;
360docimg_1152_ }
360docimg_1153_ catch
360docimg_1154_360docimg_1155_ 360docimg_1156_{
360docimg_1157_ return null;
360docimg_1158_ }
360docimg_1159_ }
360docimg_1160_
360docimg_1161_ private static DirectoryEntry getRoot(DirectoryEntry Server)
360docimg_1162_360docimg_1163_ 360docimg_1164_{
360docimg_1165_ foreach (DirectoryEntry child in Server.Children)
360docimg_1166_360docimg_1167_ 360docimg_1168_{
360docimg_1169_ string name = child.Name.ToLower();
360docimg_1170_ if (name == "iiswebvirtualdir" || name == "root")
360docimg_1171_360docimg_1172_ 360docimg_1173_{
360docimg_1174_ return child;
360docimg_1175_ }
360docimg_1176_ }
360docimg_1177_ return null;
360docimg_1178_ }
360docimg_1179_
360docimg_1180_360docimg_1181_ /**//**/
360docimg_1182_360docimg_1183_ /**//// <summary>
360docimg_1184_ /// 修改与给定的IISWebServer具有相同网站说明的站点配置
360docimg_1185_ /// </summary>
360docimg_1186_ /// <param name="iisServer">给定的IISWebServer</param>
360docimg_1187_ public static void EditIISWebServer(IISWebServer iisServer)
360docimg_1188_360docimg_1189_ 360docimg_1190_{
360docimg_1191_ if (iisServer.index == -1)
360docimg_1192_ throw (new Exception("找不到给定的站点!"));
360docimg_1193_ DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
360docimg_1194_ DirectoryEntry Server;
360docimg_1195_
360docimg_1196_ IEnumerator ie = Service.Children.GetEnumerator();
360docimg_1197_
360docimg_1198_ while (ie.MoveNext())
360docimg_1199_360docimg_1200_ 360docimg_1201_{
360docimg_1202_ Server = (DirectoryEntry)ie.Current;
360docimg_1203_ if (Server.SchemaClassName == "IIsWebServer")
360docimg_1204_360docimg_1205_ 360docimg_1206_{
360docimg_1207_ if (Server.Properties["Serverbindings"][0].ToString() == ":" + iisServer.Port + ":")
360docimg_1208_360docimg_1209_ 360docimg_1210_{
360docimg_1211_ Server.Invoke("stop", new object[0]);
360docimg_1212_ }
360docimg_1213_ }
360docimg_1214_ }
360docimg_1215_
360docimg_1216_ Server = returnIISWebserver(iisServer.index);
360docimg_1217_ if (Server == null)
360docimg_1218_360docimg_1219_ 360docimg_1220_{
360docimg_1221_ throw (new Exception("找不到给定的站点!"));
360docimg_1222_ }
360docimg_1223_
360docimg_1224_ try
360docimg_1225_360docimg_1226_ 360docimg_1227_{
360docimg_1228_
360docimg_1229_ Server.Properties["ServerComment"][0] = iisServer.ServerComment;
360docimg_1230_ Server.Properties["Serverbindings"][0] = ":" + iisServer.Port + ":";
360docimg_1231_ Server.Properties["AccessScript"][0] = iisServer.AccessScript;
360docimg_1232_ Server.Properties["AccessRead"][0] = iisServer.AccessRead;
360docimg_1233_ Server.Properties["EnableDirBrowsing"][0] = iisServer.EnableDirBrowsing;
360docimg_1234_ Server.Properties["DefaultDoc"][0] = iisServer.DefaultDoc;
360docimg_1235_ Server.Properties["EnableDefaultDoc"][0] = iisServer.EnableDefaultDoc;
360docimg_1236_
360docimg_1237_ DirectoryEntry root = getRoot(Server);
360docimg_1238_
360docimg_1239_ Server.CommitChanges();
360docimg_1240_ if (root != null)
360docimg_1241_360docimg_1242_ 360docimg_1243_{
360docimg_1244_ root.Properties["path"][0] = iisServer.Path;
360docimg_1245_ root.CommitChanges();
360docimg_1246_ }
360docimg_1247_
360docimg_1248_ Server.Invoke("start", new object[0]);
360docimg_1249_ }
360docimg_1250_ catch (Exception es)
360docimg_1251_360docimg_1252_ 360docimg_1253_{
360docimg_1254_ throw (es);
360docimg_1255_ }
360docimg_1256_ }
360docimg_1257_
360docimg_1258_360docimg_1259_ /**//// <summary>
360docimg_1260_ /// 返回所有站点的网站说明
360docimg_1261_ /// </summary>
360docimg_1262_ /// <returns></returns>
360docimg_1263_ public static ArrayList returnIISServerComment()
360docimg_1264_360docimg_1265_ 360docimg_1266_{
360docimg_1267_ DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
360docimg_1268_ DirectoryEntry Server;
360docimg_1269_
360docimg_1270_ ArrayList list = new ArrayList();
360docimg_1271_ IEnumerator ie = Service.Children.GetEnumerator();
360docimg_1272_
360docimg_1273_ while (ie.MoveNext())
360docimg_1274_360docimg_1275_ 360docimg_1276_{
360docimg_1277_ Server = (DirectoryEntry)ie.Current;
360docimg_1278_ if (Server.SchemaClassName == "IIsWebServer")
360docimg_1279_360docimg_1280_ 360docimg_1281_{
360docimg_1282_ list.Add(Server.Properties["ServerComment"][0]);
360docimg_1283_ }
360docimg_1284_ }
360docimg_1285_
360docimg_1286_ return list;
360docimg_1287_ }
360docimg_1288_
360docimg_1289_360docimg_1290_ /**//**/
360docimg_1291_360docimg_1292_ /**//// <summary>
360docimg_1293_ /// 创建虚拟目录
360docimg_1294_ /// </summary>
360docimg_1295_ /// <param name="iisVir"></param>
360docimg_1296_ /// <param name="deleteIfExist"></param>
360docimg_1297_ public static void CreateIISWebVirtualDir(IISWebVirtualDir iisVir, bool deleteIfExist)
360docimg_1298_360docimg_1299_ 360docimg_1300_{
360docimg_1301_ if (iisVir.Parent == null)
360docimg_1302_ throw (new Exception("IISWebVirtualDir没有所属的IISWebServer!"));
360docimg_1303_
360docimg_1304_ DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
360docimg_1305_ DirectoryEntry Server = returnIISWebserver(iisVir.Parent.index);
360docimg_1306_
360docimg_1307_ if (Server == null)
360docimg_1308_360docimg_1309_ 360docimg_1310_{
360docimg_1311_ throw (new Exception("找不到给定的站点!"));
360docimg_1312_ }
360docimg_1313_
360docimg_1314_ Server = getRoot(Server);
360docimg_1315_ if (deleteIfExist)
360docimg_1316_360docimg_1317_ 360docimg_1318_{
360docimg_1319_ foreach (DirectoryEntry VirDir in Server.Children)
360docimg_1320_360docimg_1321_ 360docimg_1322_{
360docimg_1323_ if (VirDir.Name.ToLower().Trim() == iisVir.Name.ToLower())
360docimg_1324_360docimg_1325_ 360docimg_1326_{
360docimg_1327_ Server.Children.Remove(VirDir);
360docimg_1328_ Server.CommitChanges();
360docimg_1329_ break;
360docimg_1330_ }
360docimg_1331_ }
360docimg_1332_ }
360docimg_1333_
360docimg_1334_ try
360docimg_1335_360docimg_1336_ 360docimg_1337_{
360docimg_1338_ DirectoryEntry vir;
360docimg_1339_ vir = Server.Children.Add(iisVir.Name, "IIsWebVirtualDir");
360docimg_1340_ vir.Properties["Path"][0] = iisVir.Path;
360docimg_1341_ vir.Properties["DefaultDoc"][0] = iisVir.DefaultDoc;
360docimg_1342_ vir.Properties["EnableDefaultDoc"][0] = iisVir.EnableDefaultDoc;
360docimg_1343_ vir.Properties["AccessScript"][0] = iisVir.AccessScript;
360docimg_1344_ vir.Properties["AccessRead"][0] = iisVir.AccessRead;
360docimg_1345_360docimg_1346_ vir.Invoke("AppCreate2", new object[1] 360docimg_1347_{ 2 });
360docimg_1348_
360docimg_1349_ Server.CommitChanges();
360docimg_1350_ vir.CommitChanges();
360docimg_1351_
360docimg_1352_ }
360docimg_1353_ catch (Exception es)
360docimg_1354_360docimg_1355_ 360docimg_1356_{
360docimg_1357_ throw (es);
360docimg_1358_ }
360docimg_1359_
360docimg_1360_ }
360docimg_1361_
360docimg_1362_360docimg_1363_ /**//**/
360docimg_1364_360docimg_1365_ /**//// <summary>
360docimg_1366_ /// 删除虚拟目录
360docimg_1367_ /// </summary>
360docimg_1368_ /// <param name="WebServerComment">站点说明</param>
360docimg_1369_ /// <param name="VirtualDir">虚拟目录名称</param>
360docimg_1370_ public static void RemoveIISWebVirtualDir(string WebServerComment, string VirtualDir)
360docimg_1371_360docimg_1372_ 360docimg_1373_{
360docimg_1374_ VirtualDir = VirtualDir.ToLower();
360docimg_1375_ DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
360docimg_1376_ DirectoryEntry Server = returnIISWebserver(WebServerComment);
360docimg_1377_
360docimg_1378_ if (Server == null)
360docimg_1379_360docimg_1380_ 360docimg_1381_{
360docimg_1382_ throw (new Exception("找不到给定的站点!"));
360docimg_1383_ }
360docimg_1384_
360docimg_1385_ Server = getRoot(Server);
360docimg_1386_ foreach (DirectoryEntry VirDir in Server.Children)
360docimg_1387_360docimg_1388_ 360docimg_1389_{
360docimg_1390_ if (VirDir.Name.ToLower().Trim() == VirtualDir)
360docimg_1391_360docimg_1392_ 360docimg_1393_{
360docimg_1394_ Server.Children.Remove(VirDir);
360docimg_1395_ Server.CommitChanges();
360docimg_1396_ return;
360docimg_1397_ }
360docimg_1398_ }
360docimg_1399_
360docimg_1400_ throw (new Exception("找不到给定的虚拟目录!"));
360docimg_1401_ }
360docimg_1402_360docimg_1403_ /**//**/
360docimg_1404_360docimg_1405_ /**//// <summary>
360docimg_1406_ /// 删除虚拟目录
360docimg_1407_ /// </summary>
360docimg_1408_ /// <param name="iisVir"></param>
360docimg_1409_ public static void RemoveIISWebVirtualDir(IISWebVirtualDir iisVir)
360docimg_1410_360docimg_1411_ 360docimg_1412_{
360docimg_1413_ DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
360docimg_1414_ DirectoryEntry Server = returnIISWebserver(iisVir.Parent.index);
360docimg_1415_
360docimg_1416_ if (Server == null)
360docimg_1417_360docimg_1418_ 360docimg_1419_{
360docimg_1420_ throw (new Exception("找不到给定的站点!"));
360docimg_1421_ }
360docimg_1422_
360docimg_1423_ Server = getRoot(Server);
360docimg_1424_ foreach (DirectoryEntry VirDir in Server.Children)
360docimg_1425_360docimg_1426_ 360docimg_1427_{
360docimg_1428_ if (VirDir.Name.ToLower().Trim() == iisVir.Name.ToLower())
360docimg_1429_360docimg_1430_ 360docimg_1431_{
360docimg_1432_ Server.Children.Remove(VirDir);
360docimg_1433_ Server.CommitChanges();
360docimg_1434_ return;
360docimg_1435_ }
360docimg_1436_ }
360docimg_1437_
360docimg_1438_ throw (new Exception("找不到给定的虚拟目录!"));
360docimg_1439_ }
360docimg_1440_
360docimg_1441_ }
360docimg_1442_}
360docimg_1443_