C#实现创建,删除,查找,配置虚拟目录实例详解
本文实例讲述了C#实现创建,删除,查找,配置虚拟目录的方法。分享给大家供大家参考。具体如下:
#region<<虚拟目录>> ///<summary> ///创建虚拟目录 ///</summary> ///<param>虚拟目录别名</param> ///<param>内容所在路径</param> publicstaticboolCreateVirtualDirectory(stringwebSite,stringvirtualName,stringpath) { if(virtualName.Equals(string.Empty)||(!Directory.Exists(path))) { MessageBox.Show("1.虚拟目录别名不能为空/r/n2.虚拟目录内容所在路径可能不存在","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning); returnfalse; } try { DirectoryEntrytbEntry=FindVirtualDir(webSite,virtualName);//查找虚拟目录 if(tbEntry==null)//找不到则创建虚拟目录 { stringIISpath="IIS://localhost/W3SVC/"+webSite+"/ROOT";//IIS参数格式 System.DirectoryServices.DirectoryEntryroot=newDirectoryEntry(IISpath); tbEntry=root.Children.Add(virtualName,root.SchemaClassName);//创建虚拟目录 } returnUpdateVirDir(tbEntry,path,virtualName); } catch(Exceptionex) { MessageBox.Show("1.请确认IIS是否已经安装/r/n2.虚拟目录有可能已经存在/r/n(Error:"+ex.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Warning); WriterLog("CreateVir:/r/n"+ex.ToString()); returnfalse; } } ///<summary> ///获取网站列表 ///</summary> ///<returns></returns> publicstaticList<webSiteInfo>GetWebSiteList() { try { List<webSiteInfo>infoList=newList<webSiteInfo>(); DirectoryEntrydeRoot=newDirectoryEntry("IIS://localhost/W3SVC"); foreach(DirectoryEntryeindeRoot.Children) { webSiteInfoinfo=newwebSiteInfo(); PropertyValueCollectionpvc=e.Properties["ServerBindings"]; if(pvc.Count<=0) continue; String[]srvBindings=pvc[0].ToString().Split(':'); info.IpAddress=srvBindings[0]==string.Empty?appCode.ToolBox.GetIP():srvBindings[0];//绑定的IP地址 info.Port=srvBindings[1];//对应端口号 info.Name=e.Name;//所在站点索引 infoList.Add(info); } returninfoList; } catch(Exceptionex) { WriterLog(ex.ToString()); returnnull; } } ///<summary> ///删除虚拟目录 ///</summary> ///<param></param> ///<param></param> ///<returns></returns> publicstaticboolDelVirtualDirectory(stringwebSite,stringnameDirectory) { try { DirectoryEntrydeRoot=newDirectoryEntry("IIS://localhost/W3SVC/"+webSite+"/ROOT"); try { deRoot.Children.Remove(FindVirtualDir(webSite,nameDirectory)); deRoot=null; returntrue; } catch { returntrue; } } catch(Exceptione) { WriterLog(e.ToString()); returnfalse; } } ///<summary> ///修改虚拟目录 ///</summary> ///<param></param> ///<param></param> ///<param></param> ///<returns></returns> publicstaticboolUpdateVirDir(DirectoryEntrytbEntry,stringpath,stringvirtualName) { if(tbEntry==null) returnfalse; tbEntry.Properties["Path"][0]=path;//物理目录 tbEntry.Invoke("AppCreate",true);//创建应用程序 tbEntry.Properties["AccessRead"][0]=true;//允许访问 tbEntry.Properties["ContentIndexed"][0]=true;;// tbEntry.Properties["DefaultDoc"][0]="index.asp,Default.aspx"; tbEntry.Properties["AppFriendlyName"][0]=virtualName;//应用程序名 tbEntry.Properties["AccessScript"][0]=true;//访问权限 tbEntry.Properties["DontLog"][0]=true;//日志 tbEntry.Properties["AuthFlags"][0]=1;//验证,0不,1允许,3基本身份 tbEntry.CommitChanges();//开始应用属性 returntrue; } ///<summary> ///查找虚拟目录 ///</summary> ///<param></param> ///<returns></returns> publicstaticDirectoryEntryFindVirtualDir(stringwebSite,stringvirtualName) { if(virtualName.Equals(string.Empty)) { MessageBox.Show("虚拟目录别名不能为空","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning); returnnull; } try { stringIISpath="IIS://localhost/W3SVC/"+webSite+"/ROOT";//IIS参数格式 System.DirectoryServices.DirectoryEntryroot=newDirectoryEntry(IISpath);//实例IIS类 returnroot.Children.Find(virtualName,root.SchemaClassName);//查找虚拟目录) } catch(Exceptionex) { WriterLog("虚拟目录不存在:"+ex.Message); returnnull; } } ///<summary> ///为虚拟目录增加扩展名 ///</summary> ///<param>虚拟目录名</param> ///<param>扩展名列表</param> publicstaticvoidSetMime(stringwebSite,stringvirtualName,Dictionary<string,string>exList) { if(virtualName.Equals(string.Empty)) { MessageBox.Show("虚拟目录别名不能为空","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning); return; } DirectoryEntrytbEntry=FindVirtualDir(webSite,virtualName); if(tbEntry==null) return; System.DirectoryServices.PropertyValueCollectionmime=tbEntry.Properties["MimeMap"]; foreach(stringeinexList.Keys) { IISOle.MimeMapClassEx=newIISOle.MimeMapClass(); Ex.Extension=e; Ex.MimeType=exList[e]; if(ContianValue(Ex,mime)!=null) continue; mime.Add(Ex); Ex=null; } tbEntry.CommitChanges(); } ///<summary> ///删除扩展名 ///</summary> ///<param></param> ///<param></param> ///<returns></returns> publicstaticboolDelMime(IISOle.IISMimeTypetype,stringwebSite,stringvirtualName) { DirectoryEntrytbEntry=FindVirtualDir(webSite,virtualName); if(tbEntry==null) returnfalse; System.DirectoryServices.PropertyValueCollectionmime=tbEntry.Properties["MimeMap"]; objectv=ContianValue(type,mime); if(v!=null) mime.Remove(v); tbEntry.CommitChanges(); returntrue; } ///<summary> ///搜索取指定扩展名对象 ///</summary> ///<param></param> ///<param></param> ///<returns></returns> privatestaticobjectContianValue(IISOle.IISMimeTypetype,PropertyValueCollectionmime) { foreach(objectvinmime) { IISOle.IISMimeTypee=(IISOle.IISMimeType)v; if(type.Extension.ToLower().Equals(e.Extension.ToLower())&&(type.MimeType.ToLower().Equals(e.MimeType.ToLower()))) { e=null; returnv; } } returnnull; } ///<summary> ///获得虚拟目录的扩展名列表 ///</summary> ///<param></param> ///<returns></returns> publicstaticDictionary<string,string>GetMimeList(stringwebSite,stringvirtualName) { if(virtualName.Equals(string.Empty)) { MessageBox.Show("虚拟目录别名不能为空","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning); returnnull; } try { Dictionary<string,string>Res=newDictionary<string,string>(); DirectoryEntrytbEntry=FindVirtualDir(webSite,virtualName); if(tbEntry==null) returnnull; System.DirectoryServices.PropertyValueCollection_mime=tbEntry.Properties["MimeMap"]; foreach(objectein_mime) { IISOle.IISMimeTypev=(IISOle.IISMimeType)e; if(!Res.ContainsKey(v.Extension)) Res.Add(v.Extension,v.MimeType); v=null; } returnRes; } catch(Exceptionex) { WriterLog("GetMimeList;"+ex.Message); returnnull; } } #endregion
希望本文所述对大家的C#程序设计有所帮助。