怎么通过代码管理IIS目录?

骑拉帝纳 2007-01-04 04:53:08
如何用代码创建IIS目录
...全文
178 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pol000 2007-01-11
  • 打赏
  • 举报
回复
mark
qianlanglearn 2007-01-10
  • 打赏
  • 举报
回复
关注。学习中
dali168 2007-01-04
  • 打赏
  • 举报
回复
学习
zlc_168 2007-01-04
  • 打赏
  • 举报
回复
//为方便重载
public void Connect(string strServer)
{
_server = strServer;
ConnectToServer();
}
//为方便重载
public void Connect(string strServer,string strWebSite)
{
_server = strServer;
_website = strWebSite;
ConnectToServer();
}
//判断是否存这个虚拟目录
public bool Exists(string strVirdir)
{
return _virdirs.Contains(strVirdir);
}
//添加一个虚拟目录
public void Create(VirtualDirectory newdir)
{
string strPath = "IIS://" + _server + "/W3SVC/" + _website + "/ROOT/" + newdir.Name;
if(!_virdirs.Contains(newdir.Name) || _batchflag )
{
try
{
//加入到ROOT的Children集合中去
DirectoryEntry newVirDir = rootfolder.Children.Add(newdir.Name,"IIsWebVirtualDir");
newVirDir.Invoke("AppCreate",true);
newVirDir.CommitChanges();
rootfolder.CommitChanges();
//然后更新数据
UpdateDirInfo(newVirDir,newdir);
}
catch(Exception ee)
{
throw new Exception(ee.ToString());
}
}
else
{
throw new Exception("This virtual directory is already exist.");
}
}
//得到一个虚拟目录
public VirtualDirectory GetVirDir(string strVirdir)
{
VirtualDirectory tmp = null;
if(_virdirs.Contains(strVirdir))
{
tmp = _virdirs.Find(strVirdir);
((VirtualDirectory)_virdirs[strVirdir]).flag = 2;
}
else
{
throw new Exception("This virtual directory is not exists");
}
return tmp;
}

//更新一个虚拟目录
public void Update(VirtualDirectory dir)
{
//判断需要更改的虚拟目录是否存在
if(_virdirs.Contains(dir.Name))
{
DirectoryEntry ode = rootfolder.Children.Find(dir.Name,"IIsWebVirtualDir");
UpdateDirInfo(ode,dir);
}
else
{
throw new Exception("This virtual directory is not exists.");
}
}
 
//删除一个虚拟目录
public void Delete(string strVirdir)
{
if(_virdirs.Contains(strVirdir))
{
object[] paras = new object[2];
paras[0] = "IIsWebVirtualDir"; //表示操作的是虚拟目录
paras[1] = strVirdir;
rootfolder.Invoke("Delete",paras);
rootfolder.CommitChanges();
}
else
{
throw new Exception("Can't delete " + strVirdir + ",because it isn't exists.");
}
}
//批量更新
public void UpdateBatch()
{
BatchUpdate(_virdirs);
}
//重载一个:-)
public void UpdateBatch(VirtualDirectories vds)
{
BatchUpdate(vds);
}
 
///<summary>
///私有方法
///</summary>

//连接服务器
private void ConnectToServer()
{
string strPath = "IIS://" + _server + "/W3SVC/" + _website +"/ROOT";
try
{
this.rootfolder = new DirectoryEntry(strPath);
_virdirs = GetVirDirs(this.rootfolder.Children);
}
catch(Exception e)
{
throw new Exception("Can't connect to the server ["+ _server +"] ...",e);
}
}
//执行批量更新
private void BatchUpdate(VirtualDirectories vds)
{
_batchflag = true;
foreach(object item in vds.Values)
{
VirtualDirectory vd = (VirtualDirectory)item;
switch(vd.flag)
{
case 0:
break;
case 1:
Create(vd);
break;
case 2:
Update(vd);
break;
}
}
_batchflag = false;
}
//更新东东
private void UpdateDirInfo(DirectoryEntry de,VirtualDirectory vd)
{
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();
}

//获取虚拟目录集合
private VirtualDirectories GetVirDirs(DirectoryEntries des)
{
VirtualDirectories tmpdirs = new VirtualDirectories();
foreach(DirectoryEntry de in des)
{
if(de.SchemaClassName == "IIsWebVirtualDir")
{
VirtualDirectory vd = new VirtualDirectory();
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);
}
}
return tmpdirs;
}

}
/// <summary>
/// VirtualDirectory类
/// </summary>
public class VirtualDirectory
{
private bool _read,_execute,_script,_ssl,_write,_authbasic,_authntlm,_indexed,_endirbrow,_endefaultdoc;
private string _ausername,_auserpass,_name,_path;
private int _flag;
private string _defaultdoc;
/// <summary>
/// 构造函数
/// </summary>
public VirtualDirectory()
{
SetValue();
}
public VirtualDirectory(string strVirDirName)
{
_name = strVirDirName;
SetValue();
}
private void SetValue()
{
_read = true;_execute = false;_script = false;_ssl= false;_write=false;_authbasic=false;_authntlm=false;
_indexed = false;_endirbrow=false;_endefaultdoc = false;
_flag = 1;
_defaultdoc = "default.htm,default.aspx,default.asp,index.htm";
_path = "C:\\";
_ausername = "";_auserpass ="";_name="";
}
///<summary>
///定义属性,IISVirtualDir太多属性了
///我只搞了比较重要的一些,其它的大伙需要的自个加吧。
///</summary>

public int flag
{
get{ return _flag;}
set{ _flag = value;}
}
public bool AccessRead
{
get{ return _read;}
set{ _read = value;}
}
public bool AccessWrite
{
get{ return _write;}
set{ _write = value;}
}
public bool AccessExecute
{
get{ return _execute;}
set{ _execute = value;}
}
public bool AccessSSL
{
get{ return _ssl;}
set{ _ssl = value;}
}
public bool AccessScript
{
get{ return _script;}
set{ _script = value;}
}
public bool AuthBasic
{
get{ return _authbasic;}
set{ _authbasic = value;}
}
public bool AuthNTLM
{
get{ return _authntlm;}
set{ _authntlm = value;}
}
public bool ContentIndexed
{
get{ return _indexed;}
set{ _indexed = value;}
}
public bool EnableDirBrowsing
{
get{ return _endirbrow;}
set{ _endirbrow = value;}
}
public bool EnableDefaultDoc
{
get{ return _endefaultdoc;}
set{ _endefaultdoc = value;}
}
public string Name
{
get{ return _name;}
set{ _name = value;}
}
public string Path
{
get{ return _path;}
set{ _path = value;}
}
public string DefaultDoc
{
get{ return _defaultdoc;}
set{ _defaultdoc = value;}
}
public string AnonymousUserName
{
get{ return _ausername;}
set{ _ausername = value;}
}
public string AnonymousUserPass
{
get{ return _auserpass;}
set{ _auserpass = value;}
}
}
/// <summary>
/// 集合VirtualDirectories
/// </summary>

public class VirtualDirectories : System.Collections.Hashtable
{
public VirtualDirectories()
{
}
//添加新的方法
public VirtualDirectory Find(string strName)
{
return (VirtualDirectory)this[strName];
}
}
}
zlc_168 2007-01-04
  • 打赏
  • 举报
回复
.Net中如何操作IIS(源代码)
作者:- 来源:- 添加时间:2006-5-21 10:52:08
///***********************************************************
///************** IIS控制管理类 1.0 Beta **************
///************** Author: 飞刀 **************
///**************http://www.aspcn.com **************
///************** feidao@aspcn.com **************
///************** 2002.05.25 世界杯前6 天 **************
///***********************************************************
using System;
using System.Data;
using System.DirectoryServices;
using System.Collections;
namespace Aspcn.Management
{
/// <summary>
/// IISManager 的摘要说明。
/// </summary>
public class IISManager
{
//定义需要使用的
private string _server,_website;
private VirtualDirectories _virdirs;
protected System.DirectoryServices.DirectoryEntry rootfolder;
private bool _batchflag;
public IISManager()
{
//默认情况下使用localhost,即访问本地机
_server = "localhost";
_website = "1";
_batchflag = false;
}
public IISManager(string strServer)
{
_server = strServer;
_website = "1";
_batchflag = false;
}
/// <summary>
/// 定义公共属性
/// </summary>

//Server属性定义访问机器的名字,可以是IP与计算名
public string Server
{
get{ return _server;}
set{ _server = value;}
}
//WebSite属性定义,为一数字,为方便,使用string
//一般来说第一台主机为1,第二台主机为2,依次类推
public string WebSite
{
get{ return _website; }
set{ _website = value; }
}

//虚拟目录的名字
public VirtualDirectories VirDirs
{
get{ return _virdirs; }
set{ _virdirs = value;}
}
///<summary>
///定义公共方法
///</summary>

//连接服务器
public void Connect()
{
ConnectToServer();
}
clonex 2007-01-04
  • 打赏
  • 举报
回复
沙发
XP系统下Internet信息服务IIS的安装方法 1、控制面板里没有“->添加/删除Windows组件->Internet信息服务(IIS)”组件的添加方法。 (某些GHOST系统精简后没有此项******不是所有的GHOST系统都需要进行这一步) 把IIS列进系统组件并安装。先到网上下载iis5.安装包,解压到D盘的根目录下(最好是根目录,便于后面打命令)把目录名该为iis51 首先在“开始”菜单的“运行”中输入“c:\Windows\inf\sysoc.inf”,在sysoc.inf中找到“[Components]”这一段,在里面加上这段:“iis=iis2.dll,OcEntry,iis2.inf,,7”,之后保存并关闭。 接下来,在运行中输入“CMD”然后回车,打开命令行模式,在命令行下输入下列的两条命令,在每一行命令结束后回车: expand d:\iis51\iis.dl_ c:\Windows\system32\setup\iis2.dll expand d:\iis51\iis.in_ c:\Windows\inf\iis2.inf 添加.删除windows组件时出现无法打开信息文件iis.inf 添加.删除windows组件时出现无法打开安装文件iis.dll (下载相关的文件,这里的压缩包是我安装时搜集的!到上面提到的相应目录中,即可) 注意如果你解压到了F盘就把上面的D改为F就可以了,其他同理。这时候,你打开控制面板->添加/删除Windows组件,就会发现,Internet信息服务(IIS)的安装选项已经出现在安装列表里了。 之后就和平常安装IIS一样了,只不过,在安装的过程中会出现找不到文件的情况(这是正常的,因为你的IIS安装目录没在XP默认的目录下)。这时,你点吉浏览,选择你刚刚解压的目录就可以了,这种让你选择安装文件的现象共会出现几次。过一会,IIS就安装完成了,点击“完成”。但做到这一步还不算完,因为是安装包安装的,需要对IIS进行一些设置(不然会出现内部服务器500错误)。 2、解决数据库链接错误的方法 打开开始--所有程序--管理工具--组件服务,在左边选择“控制台根目录”->"组件服务"->"计算机"->"我的电脑"->"COM+应用程序", 然后在右边框里点右键"IIS Out-Of-Process Pooled Applications ",选择属性,点“标识”选项卡,选择“系统帐户”,然后确定,重启IIS即可。 3、无法进入“控制台根目录”->"组件服务"->"计算机"->"我的电脑"->"COM+应用程序"的解决方法 进入“控制台根目录”->"组件服务"->"计算机"->"我的电脑"->"COM+应用程序", 出错后,错误代码8004E00F-COM+无法与Microsoft分布式事务协调程序 在开始程序运行:msdtc -resetlog 就行了。 4、->"COM+应用程序"里正常要有的应用程序一般为8个对象,如果没有IIS****项目则在控制面板/组件里重新安装 IIS就会解决。 COM+ Explorer COM+ QC Dead Letter Queue Listener COM+ Utilities IIS In-Process Applications IIS Out-Of-Process Pooled Applications IIS Utilities MS Software Shadow Copy Provider System Application需注意以下几点. 在Internet信息服务下有本地计算机(计算机机名),单击名键,选择断开,提示确实要断开本地计算机(计算机机名)吗?选择确定。 右键单击Internet,选择连接,计算机名填本机名称,用户名填本机管理员帐号(Administrator),确定。 1:在“服务(本地)”里有一项Eventlog和HTTP SSL都和IIS的或World Wide Web Publishing Services所以来的服务项 打开它们 2:在“服务(本地)”里中的World Wide Web Publishing Services所需要依赖的服务(Dependencies),看到是IIS Admin Service。进而发现IIS Admin Service也无法启动,再查IIS Admin Service的Dependencies,查的结果是Protected Storage和RPC(Remote Procedure Call),于是启动RPC,接着顺利启动IIS Admin Service,接着启动World Wide Web Publishing Services,于是IIS恢复正常。 3:当启动World Wide Web Publishing Services时提示 错误:127:找不到指定的程序。时:可以在添加删除程序(控制面板-添加删除程序)中的最上边点"显示更新"到系统更新软件里的更新的补丁KB939373 删掉它! 然后再启动IIS 一切OK 4:重装一下IIS 5.若出现默认网站(停止)可以在添加删除里把系统更新的939373删除即可用了! 将IIS安装到Ghost系统中,本教程适合Ghost XP SP2、SP3,提供安装过程需要Windows XP安装光盘,非Ghost系统光盘,另外如果安装成功还有什么错误,请参与本栏目相关教程。 Ghost系统安装IIS 有一些版本的Ghost系统中,并不是不能安装IIS,而是“MSDTC服务被关闭所造成的。 1、 MSDTC服务被停用 解决这个问题前,先在“开始-设置-控制面板-管理工具”中打开组件服务,在“组件服务”中依次单击“控制台根目录-组件服务-计算机-我的电脑-COM+应用程序”,如果滑有启动“MSDTC服务,此时会弹出一个“COM+”无法与Microsoft分布式事务协调程序交谈的错误提示。 此时需要在系统中加载MSDTC服务,在“开始-运行”中输入“net srart msdtc”命令,会弹出一个提示窗口,系统会对MSDTC服务进行启动。如果以后想停止该服务,只需“运行”中输入“net stop msdtc ”命令即可。 启动MDSTC服务后,在组件服务中“COM+应用程序”项就可以进入了,在“COM+应用程序”中找到“IIS Out-Of-Process Pooled”,鼠标右键“属性”,进入到“标识”界面,在此点选“系统账户”并选择“交互式用户”,随后“确定”即可。 2、 IIS的安装 IIS安装方法非常简单,在“控制面板”的“添加/删除程序”中选择“添加Window组件”,打开“Windows组件”列表,在此勾选“Internet信息服务(IIS)组件”,随后单击下面的“详细信息”,打开“Internet信息服务”列表,勾选一些相关的组件即可。 IIS无法运行怎么办? IIS安装后无法正常运行,需要对“IWAM帐号密码”进行重新设置。首先在“控制面板”的“管理工具”中启动计算机管理,在“计算机管理”窗口左侧的列表中依次点选“计算机管理-系统工具-本地用户和组-用户”在打开的用户列表中,可以看到一个为“IWAM_8F381469CFAA4F9”用户名(注8F381469CFAA4F9为计算机名,不同电脑不一样),IWAM账号是安装IIS时系统自动建立的内置账号,主要用于启动进程之外的应用程序的Internet信息服务。 更改该用户密码时,需要使用adsutil.vbs脚本来实现,该文件位于C:\windows\adminscripts文件夹中,修改密码时,在CMD窗口中运行下面的命令: C:\inetput\adminscripts>adsutil set w3svc/wamuserpass "Password"。参数中“Password”就是要设置IWAM帐号的新密码,这样一般情况下就可以正常运行了IIS了。

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧