2025年3月18日 星期二 甲辰(龙)年 月十七 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > .net

利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法

时间:03-25来源:作者:点击数:47

利用.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( " 创建完成! " );

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门