解释主题:IIS下建了多个网站
解决方案 »
- C#(csharp)编程工具
- 高效率提取大字符串数据, 在线等
- 求教:如何最快的求出两个数组的交集?
- 数据比较的问题。
- 计算在库时间段
- 求一个把listview的内容导成Excel的通用类(进者有分送)
- 紧急求助:关于TreeView控件
- 仅剩的50分,求一个当把XML文件作为数据库使用时,C#操作XML的类(基本框架也可以(就是所有实现该功能会涉及到的方法原形))万分感谢
- 请问!!!用c#写好的程序要发布到一台windows平台的计算机上,请问应满足哪些条件?谢谢!
- DATAGIRD 问题,如何固定DATAGRID显示时的某一列的宽度
- !!哪有C#版的FTP客户端和服务器端的实例代码啊!!
- 更新数据的问题,请教!!thx
还可以引用Com组件中的Active Ds IIS extension dll查看其中函数是否你想要的。
#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}