这里,采用网上代码比较多的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
"
);
创建完网站后,要创建默认根节点,代码如下:
创建根节点
// 创建默认根节点目录
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帮助文档下的“参考->配置数据库参考属性"进行进一步了解!
打完,收工!