黑色喜剧粤语百度云:C#使用DirectoryEntry操作IIS创建网站和虚拟路径
来源:百度文库 编辑:九乡新闻网 时间:2024/10/04 04:44:55
C#使用DirectoryEntry操作IIS创建网站和虚拟路径
在.Net中我们可以使用内置的类DirectoryEntry来承载IIS服务器中的任何网站,虚拟路径或应用程序池对象,例如: DirectoryEntry ent = new DirectoryEntry("IIS://localhost/w3svc/1/root");就创建了一个IIS路径为IIS://localhost/w3svc/1/root的虚拟路径对象。 为了在IIS中创建一个网站,我们首先需要确定输入的网站路径在IIS中是否存在,这里主要是根据网站在IIS中的ServerBindings属性来区分:DirectoryEntry ent;DirectoryEntry rootEntry;try{ ent = EnsureNewWebSiteAvailable(host + ":" + port + ":" + webSiteDesc); if (ent != null) { //这里如果用户输入的网站在IIS中已经存在,那么直接获取网站的root对象,也就是网站的默认应用程序 rootEntry = ent.Children.Find("root", "IIsWebVirtualDir"); } else { //如果网站在IIS不存在,那么我们需要首先在IIS中创建该网站,并且为该网站创建一个root应用程序 string entPath = string.Format("IIS://{0}/w3svc", Host); DirectoryEntry root = GetDirectoryEntry(entPath); string newSiteNum = GetNewWebSiteID(); DirectoryEntry newSiteEntry = root.Children.Add(newSiteNum, "IIsWebServer"); newSiteEntry.CommitChanges(); newSiteEntry.Properties["ServerBindings"].Value = host + ":" + port + ":" + webSiteDesc; newSiteEntry.Properties["ServerComment"].Value = webSiteComment; newSiteEntry.CommitChanges(); rootEntry = newSiteEntry.Children.Add("root", "IIsWebVirtualDir"); rootEntry.CommitChanges(); rootEntry.Properties["Path"].Value = webSitePath; rootEntry.Properties["AppPoolId"].Value = appPool; rootEntry.Properties["AccessRead"][0] = true; // 勾选读取 rootEntry.Properties["AuthFlags"][0] = 1+4;//勾选匿名访问和windows身份验证 /** 标志 标志名 AuthBasic 描述 指定基本身份验证作为可能的
Windows 验证方案之一,返回给客户端作为有效验证方案。 配置数据库位掩码标识符 MD_AUTH_BASIC 十进制值 2 十六进制值 0x00000002 标志名 AuthAnonymous 描述 指定匿名身份验证作为可能的
Windows 验证方案之一,返回给客户端作为有效验证方案。 配置数据库位掩码标识符 MD_AUTH_ANONYMOUS 十进制值 1 十六进制值 0x00000001 标志名 AuthNTLM 描述 指定集成 Windows
身份验证(也称作质询/响应或 NTLM 验证)作为可能的 Windows 验证方案之一,返回给客户端作为有效验证方案。 配置数据库位掩码标识符 MD_AUTH_NT 十进制值 4 十六进制值 0x00000001 标志名 AuthMD5 描述 指定摘要式身份验证和高级摘要式身份验证作为可能的 Windows
验证方案之一,返回给客户端作为有效验证方案。 配置数据库位掩码标识符 MD_AUTH_MD5 十进制值 16 十六进制值 0x00000010 标志名 AuthPassport 描述 true 的值表示启用了 Microsoft .NET Passport 身份验证。 详细信息,请参阅 .NET Passport 验证。 配置数据库位掩码标识符 MD_AUTH_PASSPORT 十进制值 64 十六进制值 0x00000040 */ rootEntry.Properties["DontLog"][0] = true; rootEntry.Properties["AuthAnonymous"][0] = true; rootEntry.Properties["AnonymousUserName"][0] = XmlSettings.GetWebXmlSettingString("IISAnonymousUserName"); /*这里AnonymousUserPass属性如果不去设置,IIS会自动控制匿名访问账户的密码。之前我尝试将匿名访问用户的密码传给网站,之后发现创建出来的网站尽管勾选的匿名访问并且设置了匿名用户密码,浏览的时候还是提示要输入密码,很是纠结*/ rootEntry.Invoke("AppCreate", true); rootEntry.CommitChanges(); } DirectoryEntry de = rootEntry.Children.Add(friendlyName, rootEntry.SchemaClassName); de.CommitChanges(); de.Properties["Path"].Value = virtualPath; de.Properties["AccessRead"][0] = true; // 勾选读取 de.Invoke("AppCreate", true); de.Properties["EnableDefaultDoc"][0] = true; de.Properties["AccessScript"][0] = true; // 脚本资源访问 de.Properties["DontLog"][0] = true; // 勾选记录访问 de.Properties["ContentIndexed"][0] = true; // 勾选索引资源 de.Properties["AppFriendlyName"][0] = friendlyName; //应用程序名 de.Properties["AuthFlags"][0] = 5; /*这里在创建虚拟路径时不需要再次设置匿名访问,因为网站下的虚拟路径会默认接受网站的访问限制设置*/ de.CommitChanges();}catch (Exception e){ throw e;} public string GetNewWebSiteID() { ArrayList list = new ArrayList(); string tempStr; string entPath = string.Format("IIS://{0}/w3svc",Host); DirectoryEntry ent = GetDirectoryEntry(entPath); foreach (DirectoryEntry child in ent.Children) { if (child.SchemaClassName == "IIsWebServer") { tempStr = child.Name.ToString(); list.Add(Convert.ToInt32(tempStr)); } } list.Sort(); var newId = Convert.ToInt32(list[list.Count - 1]) + 1; return newId.ToString();} public DirectoryEntry GetDirectoryEntry(string entPath) { DirectoryEntry ent; if (string.IsNullOrEmpty(UserName)) { ent = new DirectoryEntry(entPath); } else { ent = new DirectoryEntry(entPath, Host + "\\" + UserName, Password, AuthenticationTypes.Secure); } return ent;} public DirectoryEntry EnsureNewWebSiteAvailable(string bindStr) { string entPath = string.Format("IIS://{0}/w3svc",Host); 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 child; } } } } return null;} 分类: C#
C#使用DirectoryEntry操作IIS创建网站和虚拟路径
c#操作IIS的完整类
Serv-U中虚拟路径的使用
如何在 IIS 6.0 中使用命令行脚本管理网站和 Web 虚拟目录
位图的创建和使用
使用IIS内置压缩功能优化增加网站访问速度
Windows 7创建和移除虚拟分区的方法
flv视频网站制作 使用Flex和PHP创建自己的视频应用 - MJ的日志 - 网...
C# 文件路径、文件名、扩展名
IIS发布网站
IIS网站日志综合分析
C# 判断文件和文件夹是否存在并创建 - CookBlack - 博客园
C#数组操作
设置tomcat 默认路径 虚拟路径 目录
c#学习网站
IIS默认网站启动不了
C# 中怎么创建ACCESS数据库文件2
TeamViewer使用方法、绿色版下载、说明和介绍 - Windows/IIS使用教...
SSRS 使用Report Builder 和Report Model创建Report -...
使用C#开发ActiveX控件
使用C#和Excel进行报表开发(四)-复制单元格
c#接口和抽象类的区别 - dbajun - JavaEye技术网站
使用CWnd创建Dialog
命令行脚本创建网站