原创 利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法(二)收藏

利用.NET Framework提供的System.DirectoryServices.DirectoryEntry类可以轻松创建IIS站点,并将站点设置为ASP.NET 2.0版本。无疑,这种方法与前面的那个方法相比较,是比较好的。一下代码需要注意的地方是:

1,没有做路径检查,这个很简单;
2,没有做端口存在的检查,这个也不是很复杂;
3,ScriptMapsList数组是为了简单起见,直接从字符串进行分解出来,这个需要注意你自己的应用;
4;更多IIS权限处理,可根据需要进行添加。

本方法代码如下:

string ScriptMaps = @".asp,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE
        .cer,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE
        .cdx,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE
        .asa,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE
        .idc,C:\WINDOWS\system32\inetsrv\httpodbc.dll,5,GET,POST
        .shtm,C:\WINDOWS\system32\inetsrv\ssinc.dll,5,GET,POST
        .shtml,C:\WINDOWS\system32\inetsrv\ssinc.dll,5,GET,POST
        .stm,C:\WINDOWS\system32\inetsrv\ssinc.dll,5,GET,POST
        .asax,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .ascx,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .ashx,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
        .asmx,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
        .aspx,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
        .axd,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
        .vsdisco,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
        .rem,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
        .soap,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
        .config,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .cs,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .csproj,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .vb,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .vbproj,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .webinfo,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .licx,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .resx,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .resources,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .xoml,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
        .rules,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
        .master,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .skin,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .compiled,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .browser,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .mdb,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .jsl,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .vjsproj,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .sitemap,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .msgx,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
        .ad,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .dd,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .ldd,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .sd,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .cd,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .adprototype,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .lddprototype,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .sdm,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .sdmDocument,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .ldb,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .svc,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
        .mdf,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .ldf,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .java,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .exclude,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
        .refresh,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
";

String[] ScriptMapsList 
= System.Text.RegularExpressions.Regex.Split(ScriptMaps, "\r\n");


///注意:这里没有进行进行端口存在的检查
// Access Flags
const int MD_ACCESS_READ = 0x00000001//Allow read access.
const int MD_ACCESS_SCRIPT = 0x00000200// Allow script execution.


string entPath = "IIS://localhost/w3svc";
System.DirectoryServices.DirectoryEntry rootEntry 
= new System.DirectoryServices.DirectoryEntry(entPath);
int siteID = 1;
//得到现有的站点标识
foreach (System.DirectoryServices.DirectoryEntry entry in rootEntry.Children)
{
  
if (entry.SchemaClassName == "IIsWebServer")
  {
    
int ID = Convert.ToInt32(entry.Name);

    
if (ID >= siteID)
    {
      siteID 
= ID + 1;
    }
  }
}

System.DirectoryServices.DirectoryEntry newSiteEntry 
= rootEntry.Children.Add(siteID.ToString(), "IIsWebServer");
newSiteEntry.Properties[
"ServerBindings"].Value = ":8001:";
newSiteEntry.Properties[
"ServerComment"].Value = "mengxianhui2";
newSiteEntry.CommitChanges();
System.DirectoryServices.DirectoryEntry vDirEntry 
= newSiteEntry.Children.Add("root""IIsWebVirtualDir");
vDirEntry.Properties[
"Path"].Value = @"C:\mengxianhui";
//System.Collections.ArrayList ScriptMapsList = new System.Collections.ArrayList();
//ScriptMapsList.Add(@".aspx,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG");
//ScriptMapsList.Add(@".asax,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG");
//ScriptMapsList.Add(@".svc,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG");
//ScriptMapsList.Add(@".msgx,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG");
//ScriptMapsList.Add(@".config,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG");
//ScriptMapsList.Add(@".ascx,c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG");
vDirEntry.Properties["ScriptMaps"].Value = ScriptMapsList;
vDirEntry.Properties[
"AppFriendlyName"][0= "孟宪会的网站";
vDirEntry.Properties[
"AppIsolated"][0= 2;
vDirEntry.Properties[
"AccessFlags"][0= MD_ACCESS_READ | MD_ACCESS_SCRIPT;
vDirEntry.Properties[
"AppRoot"][0= "LM/W3SVC/" + siteID + "/Root";
vDirEntry.CommitChanges();
newSiteEntry.CommitChanges();
MessageBox.Show(
"创建完成!");

发表于 @ 2007年08月26日 22:26:00|评论(loading...)

新一篇: ASP.NET 2.0中CSS失效的问题总结 | 旧一篇: 利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法(一)

用户操作
[即时聊天] [发私信] [加为好友]
孟宪会
订阅我的博客
XML聚合  FeedSky
孟宪会的公告
欢迎光临!您在阅读的过程中有任何建议或者意见,请发邮件或者留言,合作愉快!
文章分类
收藏
    【孟子E章】站点
    【孟子E章】站点(RSS)
    【孟子E章】网摘(RSS)
    【孟子E章】网站(RSS)
    Silverlight 1.0 SDK 中文版
    Silverlight 1.0 SDK 中文版
    【网上邻居】
    .Net开发资源中心
    【兔子】专栏
    AppleVB 主页
    Estyle(靳田)之狂想手扎
    huahaoyueyuan
    JavaProgramers的专栏
    意玺的BLOG
    最爱白菜
    枕善居VB.NET源码博客
    美丽眼睛看世界
    酷狗的窝
    阿赖
    存档
    Csdn Blog version 3.1a
    Copyright © 孟宪会