在IIS6.0的帮助文档中,对于创建IIS,提供了三种程序管理方法,一种是WMI,另一种是ADSI,还有一种是命令行方法。
这里,采用网上代码比较多的ADSI编程方式进行。
用C#进行ADSI编程,需要引用添加名称空间:System.DirectoryServices
主要操作类是:DirectoryEntry
操作的内容主要是xml节点:这点上,最好从IIS-》网站右键-》所有任务-》将配置保存到一个文件
保存后,查看一下生成的xml内容。看一下网站的节点是什么格式的,这对编程有点帮助。
以下进入代码阶段

DirectoryEntry iisEntry = new DirectoryEntry("IIS://localhost/w3svc");//获得IIS节点
//创建站点WebSiteID为整形,随便生成,不重复即可,可能引发的问题,看我之前的一篇文章:
//C# 创建网站 无法启动与停止的问题
//http://www.cnblogs.com/cyq1162/archive/2010/01/09/1642919.html
DirectoryEntry site = (DirectoryEntry)iisEntry.Invoke("Create", "IIsWebServer", WebSiteID);
site.Invoke("Put", "ServerComment", WebSiteName);
site.Invoke("Put", "KeyType", "IIsWebServer");
ArrayList serverBindings = new ArrayList();
serverBindings.Add(WebSiteIP + ":" + WebSitePort + ":" + WebSiteDomain);
if (WebSiteIP2 != "" && WebSitePort2 != "")
{
serverBindings.Add(WebSiteIP2 + ":" + WebSitePort2 + ":" + WebSiteDomain);
}
site.Invoke("Put", "ServerBindings", serverBindings.ToArray());//这里是绑定多个IP
site.Invoke("Put", "ServerState", 4);//4为停止,2为启动
site.Invoke("Put", "FrontPageWeb", 1);
site.Invoke("Put", "DefaultDoc", "index.html");
site.Invoke("Put", "ServerAutoStart", 0);
site.Invoke("Put", "AuthFlags", 0);
site.Invoke("Put", "ScriptMaps", ScriptArray().ToArray());//这里是一大堆2.0的脚本
site.Invoke("Put", "ServerSize", 1);
site.Invoke("SetInfo");
//创建站点WebSiteID为整形,随便生成,不重复即可,可能引发的问题,看我之前的一篇文章:
//C# 创建网站 无法启动与停止的问题
//http://www.cnblogs.com/cyq1162/archive/2010/01/09/1642919.html
DirectoryEntry site = (DirectoryEntry)iisEntry.Invoke("Create", "IIsWebServer", WebSiteID);
site.Invoke("Put", "ServerComment", WebSiteName);
site.Invoke("Put", "KeyType", "IIsWebServer");
ArrayList serverBindings = new ArrayList();
serverBindings.Add(WebSiteIP + ":" + WebSitePort + ":" + WebSiteDomain);
if (WebSiteIP2 != "" && WebSitePort2 != "")
{
serverBindings.Add(WebSiteIP2 + ":" + WebSitePort2 + ":" + WebSiteDomain);
}
site.Invoke("Put", "ServerBindings", serverBindings.ToArray());//这里是绑定多个IP
site.Invoke("Put", "ServerState", 4);//4为停止,2为启动
site.Invoke("Put", "FrontPageWeb", 1);
site.Invoke("Put", "DefaultDoc", "index.html");
site.Invoke("Put", "ServerAutoStart", 0);
site.Invoke("Put", "AuthFlags", 0);
site.Invoke("Put", "ScriptMaps", ScriptArray().ToArray());//这里是一大堆2.0的脚本
site.Invoke("Put", "ServerSize", 1);
site.Invoke("SetInfo");
创建完网站后,要创建默认根节点,代码如下:

//创建默认根节点目录
DirectoryEntry siteVDir = site.Children.Add("root", "IISWebVirtualDir");
siteVDir.Properties["AppIsolated"][0] = 2;
siteVDir.Properties["Path"][0] = WebSitePath;
siteVDir.Properties["AccessFlags"][0] = 513;
siteVDir.Properties["FrontPageWeb"][0] = 1;
siteVDir.Properties["AppRoot"][0] = string.Format("/LM/W3SVC/{0}/Root", WebSiteID);
siteVDir.Properties["AppFriendlyName"][0] = WebSiteName;
siteVDir.Properties["AuthFlags"][0] = 0;
siteVDir.Properties["AccessScript"][0] = true;
siteVDir.Properties["AccessSource"][0] = true;
siteVDir.Properties["DirBrowseFlags"][0] = 1073741886;
siteVDir.Properties["AuthNTLM"][0] = true;//集成win身份验证
siteVDir.Properties["AuthAnonymous"][0] = true;//集成win身份验证
siteVDir.Properties["UNCPassword"][0] = "";
siteVDir.Properties["DefaultDoc"][0] = WebSiteDefaultDoc;
siteVDir.CommitChanges();
site.CommitChanges();
DirectoryEntry siteVDir = site.Children.Add("root", "IISWebVirtualDir");
siteVDir.Properties["AppIsolated"][0] = 2;
siteVDir.Properties["Path"][0] = WebSitePath;
siteVDir.Properties["AccessFlags"][0] = 513;
siteVDir.Properties["FrontPageWeb"][0] = 1;
siteVDir.Properties["AppRoot"][0] = string.Format("/LM/W3SVC/{0}/Root", WebSiteID);
siteVDir.Properties["AppFriendlyName"][0] = WebSiteName;
siteVDir.Properties["AuthFlags"][0] = 0;
siteVDir.Properties["AccessScript"][0] = true;
siteVDir.Properties["AccessSource"][0] = true;
siteVDir.Properties["DirBrowseFlags"][0] = 1073741886;
siteVDir.Properties["AuthNTLM"][0] = true;//集成win身份验证
siteVDir.Properties["AuthAnonymous"][0] = true;//集成win身份验证
siteVDir.Properties["UNCPassword"][0] = "";
siteVDir.Properties["DefaultDoc"][0] = WebSiteDefaultDoc;
siteVDir.CommitChanges();
site.CommitChanges();
关于属性及意思,除了可通过导出xml来查看之外,也可以看IIS帮助文档下的“参考->配置数据库参考属性"进行进一步了解!
打完,收工!
版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。 |
个人微信公众号![]() |
Donation(扫码支持作者):支付宝:![]() |
Donation(扫码支持作者):微信:![]() |
![]() |
分类:
.NET 系列 / 网站安装打包
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)