用ADSI控制IIS创建网站, 虚拟目录…… (C#) - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- 用ADSI控制IIS创建网站, 虚拟目录…… (C#) (http://www.webasp.net/article/27/26072.htm) |
| -- 作者:未知 -- 发布日期: 2005-08-29 |
这是当年赶工的网站用到的东东, 结果快做完了警察叔叔来个网站要备案,朋友不干了,我也停工了,![]() 翻出来共享了~![]() 据说,控制IIS和别的MS的垃圾(MS的FTP, 用户管理 ..)可以用ADSI和WMI(WIN2k3的才好),![]() 参考了网友们的资料,有版权问题麻烦EMAIL一下![]() 原来是按三层写的代码没有整理, 权当笔记,省点稿纸, 大家看个大概, 详细的MSDN都有!![]() 三个文件:![]() ![]() /**/////////FileName: hostservice.cs![]() //////////////////////////////////////////////////////////////////////////////////////////////////![]() using System; using System.Data;![]() using Wooyea.WebSite.Modules.Hosts.DataAccess; using Wooyea.WebSite.Modules.Hosts.Configuration;![]() namespace Wooyea.WebSite.Modules.Hosts.Business![]() ![]() {![]() /**//// <summary> /// Summary description for HostService. /// </summary> public class HostService![]() {![]() Private fields#region Private fields ![]() private ModuleSettings settings;![]() private int id; private string name; private string description; private decimal price; // the field in SQL server is the type of smallmoney private string ip; private int port; private string rootPath; private int maxBandwidth; private int maxConnections; private int cpuLimit; private byte serverSize; private byte appIsolated; #endregion![]() ![]() Properties#region Properties public int ID![]() {![]() get {return id;}![]() set {id = value;} }![]() public string Name![]() {![]() get {return name;}![]() set {name = value;} }![]() public string Description![]() {![]() get {return description;}![]() set {description = value;} }![]() public decimal Price![]() {![]() get {return price;}![]() set {price = value;} }![]() public string IP![]() {![]() get {return ip;}![]() set {ip = value;} }![]() public int Port![]() {![]() get {return port;}![]() set {port = value;} }![]() public string RootPath![]() {![]() get {return rootPath;}![]() set {rootPath = value;} } public int MaxBandwidth![]() {![]() get {return maxBandwidth;}![]() set {maxBandwidth = value;} }![]() public int CpuLimit![]() {![]() get {return cpuLimit;}![]() set {cpuLimit = value;} }![]() public byte ServerSize![]() {![]() get {return serverSize;}![]() set {serverSize = value;} }![]() #endregion![]() public HostService()![]() { Configuration.ModuleConfig config = new ModuleConfig(); settings = config.GetSettings(); }![]() public HostService(string name, string description, decimal price, string ip, string rootPath) : this()![]() { this.name = name; this.description = description; this.price = price; this.ip = ip; this.rootPath = rootPath;![]() }![]() public HostService(int id) : this()![]() { this.id = id; GetDetails(); }![]() public void GetDetails()![]() { DataAccess.HostServices dataHostServices = new Wooyea.WebSite.Modules.Hosts.DataAccess.HostServices(settings.ConnectionString);![]() DataRow tempRow = dataHostServices.GetDetails(id);![]() this.name = (string)tempRow["HostServiceName"]; this.price = Convert.ToDecimal(tempRow["HostServicePrice"]); this.ip = (string)tempRow["HostServiceIP"]; this.port = (int)tempRow["HostServicePort"]; this.rootPath = (string)tempRow["HostServiceRootPath"];![]() } public DataSet GetHostServices()![]() { DataAccess.HostServices dataHostServices= new Wooyea.WebSite.Modules.Hosts.DataAccess.HostServices(settings.ConnectionString);![]() return dataHostServices.GetHostServices(); }![]() public int Create()![]() { DataAccess.HostServices dataHostServices= new Wooyea.WebSite.Modules.Hosts.DataAccess.HostServices(settings.ConnectionString);![]() return dataHostServices.Insert(name, description, price, rootPath, ip); }![]() public bool Update()![]() { DataAccess.HostServices dataHostServices= new Wooyea.WebSite.Modules.Hosts.DataAccess.HostServices(settings.ConnectionString);![]() return dataHostServices.Update(id, name, description, price, rootPath, ip); }![]() } }![]() /**/////////////end hostservice.cs/////////////////////////////////////////////////////////////////////![]() ![]() ![]() // FileName: IISManager.cs![]() using System; using System.Collections; using System.Text.RegularExpressions; using System.Text; using System.DirectoryServices;![]() using Wooyea.WebSite.Modules.Hosts;![]() namespace Wooyea.WebSite.Modules.Hosts.Business![]() ![]() {![]() /**//// <summary> /// Summary description for Class1. /// </summary> class IISManager![]() {![]() public IISManager()![]() {}![]() public DirectoryEntry GetDirectoryEntry(string entryPath)![]() { // creater direntry instance depend on local or remote DirectoryEntry dirEntry = new DirectoryEntry(entryPath);![]() return dirEntry; }![]() public bool CreateSite(WebSiteInfo newSiteInfo)![]() {![]() ![]() string entPath = "IIS://localhost/w3svc"; DirectoryEntry rootEntry = GetDirectoryEntry(entPath);![]() string newSiteID = GetNewSiteID();![]() DirectoryEntry newSiteEntry = rootEntry.Children.Add(newSiteID, "IIsWebServer"); newSiteEntry.CommitChanges();![]() newSiteEntry.Properties["ServerBindings"].Value = newSiteInfo.ServerBindings; newSiteEntry.Properties["ServerComment"].Value = newSiteInfo.Comment; newSiteEntry.CommitChanges();![]() DirectoryEntry vDirEntry = newSiteEntry.Children.Add("root", "IIsWebVirtualDir"); vDirEntry.CommitChanges();![]() vDirEntry.Properties["Path"].Value = newSiteInfo.Path; //ph patth in disk vDirEntry.CommitChanges();![]() return true;![]() }![]() ![]() /**//// <summary> /// Get and return a new website ID of specify host /// </summary> /// <returns>the smallest new website ID of the host</returns> public string GetNewSiteID()![]() { ArrayList idList = new ArrayList(); string tmpStr;![]() string entryPath = "IIS://localhost/W3SVC"; DirectoryEntry entry = GetDirectoryEntry(entryPath); foreach (DirectoryEntry child in entry.Children)![]() { if (child.SchemaClassName == "IIsWebServer")![]() { tmpStr = child.Name.ToString(); idList.Add(Convert.ToInt32(tmpStr)); } }![]() idList.Sort();![]() int i = 1; foreach (int id in idList)![]() { if (i == id)![]() { i++; } }![]() return i.ToString(); }![]() ![]() } }![]() ![]() ![]() /**////////////////////end IISmanager/////////////////////////////![]() ![]() //File Name: WebSite.cs![]() ![]() using System; using System.DirectoryServices;![]() using Wooyea.WebSite.Modules.Hosts.Configuration;![]() using Wooyea.WebSite.Modules.Hosts.Business; using Wooyea.WebSite.Modules.Hosts.DataAccess;![]() namespace Wooyea.WebSite.Modules.Hosts.Business![]() ![]() {![]() /**//// <summary> /// Summary description for WebSite. /// </summary> public class WebSite![]() {![]() Private fields#region Private fields![]() private ModuleSettings settings;![]() private WebSiteInfo siteInfo;![]() #endregion ![]() Properties#region Properties #endregion![]() WebSite()![]() { Configuration.ModuleConfig config = new ModuleConfig(); settings = config.GetSettings(); }![]() public WebSite(string newHeader, string newComment, string newIP, int newPort, string newPath) : this()![]() { this.siteInfo.Header = newHeader; this.siteInfo.IP = newIP; this.siteInfo.Port = newPort; |