[计算机]代码操作IIS之虚拟目录
代码操作IIS之虚拟目录
iis|虚拟目录
网上找到自己实验,并整理了一下:
整个后台文件如下:
usingsystem;
usingsystem。data;
usingsystem。directoryservices; usingsystem。collections;
usingsystem。threading;
namespaceaspcn。management
{
///
///iismanager的摘要说明。
///
publicclassiismanager {
///
///应用程序的主入口点。
///
[stathread]
staticvoidmain(string[]args) {
iismanagertest=newiismanager();
test。connect();
virtualdirectoryvd=newvirtualdirectory();
vd。path=@c:\inetpub\wwwroot\项目文件夹名称; vd。name=bkdeip/webui/mobile; //if(test。exists(vd。name))
//{
//test。delete(vd。name);
//}
//else
//{
//test。create(vd);
//}
test。create(vd);
}
//定义需要使用的
privatestring_server,_website; privatevirtualdirectories_virdirs;
protectedsystem。directoryservices。directoryentryrootfolder;
privatebool_batchflag; publiciismanager()
{
//默认情况下使用localhost,即访问本地机 _server=localhost;
_website=1;
_batchflag=false;
}
publiciismanager(stringstrserver)
{
_server=strserver;
_website=1;
_batchflag=false;
}
///
///定义公共属性
///
//server属性定义访问机器的名字,可以是ip与计算名 publicstringserver
{
get{return_server;} set{_server=value;} }
//website属性定义,为一数字,为方便,使用string //一般来说第一台主机为1,第二台主机为2,依次类推 publicstringwebsite {
get{return_website;} set{_website=value;} }
//虚拟目录的名字
publicvirtualdirectoriesvirdirs {
get{return_virdirs;}
set{_virdirs=value;}
}
///
///定义公共方法
///
//连接服务器
publicvoidconnect()
{
connecttoserver();
}
//为方便重载
publicvoidconnect(stringstrserver) {
_server=strserver;
connecttoserver();
}
//为方便重载
publicvoidconnect(stringstrserver,stringstrwebsite) {
_server=strserver;
_website=strwebsite;
connecttoserver();
}
//判断是否存这个虚拟目录
publicboolexists(stringstrvirdir) {
return_virdirs。contains(strvirdir); }
//添加一个虚拟目录
publicvoidcreate(virtualdirectorynewdir)
{
stringstrpath=iis://+_server+/w3svc/+_website+/root/+newdir。name;
if(!_virdirs。contains(newdir。name)||_batchflag) {
try
{
//加入到root的children集合中去
directoryentrynewvirdir=rootfolder。children。add(newdir。name,iiswebvirtualdir);
newvirdir。invoke(appcreate,true);
newvirdir。commitchanges(); rootfolder。commitchanges(); //然后更新数据
updatedirinfo(newvirdir,newdir);
}
catch(exceptionee)
{
thrownewexception(ee。tostring()); }
}
else
{
thrownewexception(thisvirtualdirectoryisalreadyexist。); }
}
//得到一个虚拟目录
publicvirtualdirectorygetvirdir(stringstrvirdir)
{
virtualdirectorytmp=null; if(_virdirs。contains(strvirdir)) {
tmp=_virdirs。find(strvirdir); ((virtualdirectory)_virdirs[strvirdir])。flag=2; }
else
{
thrownewexception(thisvirtualdirectoryisnotexists);
}
returntmp;
}
//更新一个虚拟目录
publicvoidupdate(virtualdirectorydir)
{
//判断需要更改的虚拟目录是否存在
if(_virdirs。contains(dir。name))
{
directoryentryode=rootfolder。children。find(dir。name,iiswebvirtualdir);
updatedirinfo(ode,dir);
}
else
{
thrownewexception(thisvirtualdirectoryisnotexists。); }
}
//删除一个虚拟目录
publicvoiddelete(stringstrvirdir)
{
if(_virdirs。contains(strvirdir)) {
object[]paras=newobject[2]; paras[0]=iiswebvirtualdir;//
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示操作的是虚拟目录 paras[1]=strvirdir;
rootfolder。invoke(delete,paras);
rootfolder。commitchanges(); }
else
{
thrownewexception(can'tdelete+strvirdir+,becauseitisn'texists。);
}
}
//批量更新
publicvoidupdatebatch() {
batchupdate(_virdirs); }
//重载一个:-)
publicvoidupdatebatch(virtualdirectoriesvds)
{
batchupdate(vds);
}
///
///私有方法
///
//连接服务器
privatevoidconnecttoserver() {
stringstrpath=iis://+_server+/w3svc/+_website+/root;
try
{
this。rootfolder=newdirectoryentry(strpath);
_virdirs=getvirdirs(this。rootfolder。children); }
catch(exceptione)
{
thrownewexception(can'tconnecttotheserver[+_server+]。,e); }
}
//执行批量更新
privatevoidbatchupdate(virtualdirectoriesvds)
{
_batchflag=true;
foreach(objectiteminvds。values)
{
virtualdirectoryvd=(virtualdirectory)item;
switch(vd。flag)
{
case0:
break;
case1:
create(vd);
break;
case2:
update(vd);
break;
}
}
_batchflag=false;
}
//更新东东
privatevoidupdatedirinfo(directoryentryde,virtualdirectoryvd) {
de。properties[anonymoususername][0]=vd。anonymoususername; de。properties[anonymoususerpass][0]=vd。anonymoususerpass; de。properties[accessread][0]=vd。accessread;
de。properties[accessexecute][0]=vd。accessexecute;
de。properties[accesswrite][0]=vd。accesswrite;
de。properties[authbasic][0]=vd。authbasic;
de。properties[authntlm][0]=vd。authntlm;
de。properties[contentindexed][0]=vd。contentindexed; de。properties[enabledefaultdoc][0]=vd。enabledefaultdoc; de。properties[enabledirbrowsing][0]=vd。enabledirbrowsing; de。properties[accessssl][0]=vd。accessssl;
de。properties[accessscript][0]=vd。accessscript;
de。properties[defaultdoc][0]=vd。defaultdoc;
de。properties[path][0]=vd。path;
de。commitchanges();
}
//获取虚拟目录集合
privatevirtualdirectoriesgetvirdirs(directoryentriesdes)
{
virtualdirectoriestmpdirs=newvirtualdirectories();
foreach(directoryentrydeindes)
{
if(de。schemaclassname==iiswebvirtualdir) {
virtualdirectoryvd=newvirtualdirectory(); vd。name=de。name;
vd。accessread=(bool)de。properties[accessread][0]; vd。accessexecute=(bool)de。properties[accessexecute][0]; vd。accesswrite=(bool)de。properties[accesswrite][0]; vd。anonymoususername=(string)de。properties[anonymoususername][0];
vd。anonymoususerpass=(string)de。properties[anonymoususername][0];
vd。authbasic=(bool)de。properties[authbasic][0]; vd。authntlm=(bool)de。properties[authntlm][0]; vd。contentindexed=(bool)de。properties[contentindexed][0];
vd。enabledefaultdoc=(bool)de。properties[enabledefaultdoc][0];
vd。enabledirbrowsing=(bool)de。properties[enabledirbrowsing][0];
vd。accessssl=(bool)de。properties[accessssl][0]; vd。accessscript=(bool)de。properties[accessscript][0]; vd。path=(string)de。properties[path][0];
vd。flag=0;
vd。defaultdoc=(string)de。properties[defaultdoc][0]; tmpdirs。add(vd。name,vd);
}
}
returntmpdirs;
}
}
///
///virtualdirectory类
///
publicclassvirtualdirectory
{
privatebool_read,_execute,_script,_ssl,_write,_authbasic,_authntlm,_indexed,_endirbrow,_endefaultdoc;
privatestring_ausername,_auserpass,_name,_path;
privateint_flag;
privatestring_defaultdoc;
///
///构造函数
///
publicvirtualdirectory()
{
setvalue();
}
publicvirtualdirectory(stringstrvirdirname) {
_name=strvirdirname;
setvalue();
}
privatevoidsetvalue()
{
_read=true;_execute=false;_script=false;_ssl=false;_write=false;_authbasic=fals
e;_authntlm=false; _indexed=false;_endirbrow=false;_endefaultdoc=false;
_flag=1;
_defaultdoc=default。htm,default。aspx,default。asp,index。htm;
_path=c:\\;
_ausername=;_auserpass=;_name=;
}
///
///定义属性,iisvirtualdir太多属性了 ///我只搞了比较重要的一些,其它的大伙需要的自个加吧。
///
publicintflag
{
get{return_flag;} set{_flag=value;} }
publicboolaccessread {
get{return_read;} set{_read=value;} }
publicboolaccesswrite {
get{return_write;} set{_write=value;} }
publicboolaccessexecute {
get{return_execute;} set{_execute=value;} }
publicboolaccessssl {
get{return_ssl;}
set{_ssl=value;}
}
publicboolaccessscript {
get{return_script;} set{_script=value;} }
publicboolauthbasic {
get{return_authbasic;} set{_authbasic=value;} }
publicboolauthntlm {
get{return_authntlm;} set{_authntlm=value;} }
publicboolcontentindexed {
get{return_indexed;} set{_indexed=value;} }
publicboolenabledirbrowsing
{
get{return_endirbrow;} set{_endirbrow=value;} }
publicboolenabledefaultdoc {
get{return_endefaultdoc;} set{_endefaultdoc=value;} }
publicstringname
{
get{return_name;}
set{_name=value;}
}
publicstringpath
{
get{return_path;}
set{_path=value;}
}
publicstringdefaultdoc {
get{return_defaultdoc;} set{_defaultdoc=value;} }
publicstringanonymoususername {
get{return_ausername;} set{_ausername=value;} }
publicstringanonymoususerpass {
get{return_auserpass;} set{_auserpass=value;} }
}
///
///集合virtualdirectories
///
publicclassvirtualdirectories:system。collections。hashtable
{
publicvirtualdirectories() {
}
//添加新的方法
publicvirtualdirectoryfind(stringstrname)
{
return(virtualdirectory)this[strname];
}
}
}