C#对不同版本IIS的控制方法
来源:互联网 发布:java log4j 日志格式 编辑:程序博客网 时间:2024/06/07 02:25
项目中需要实现对IIS不同版本的创建应用程序池,和安装虚拟目录/应用程序的功能
需要引用的是System.DirectoryServices命名空间下的DirectoryEntry类
DirectoryEntry官方的说法是,可封装 Active Directory 域服务层次结构中的节点或对象。
对于应用程序池的创建:
DirectoryEntry appPools = new DirectoryEntry("IIS://localhost/W3SVC/AppPools");DirectoryEntry newPool = appPools.Children.Add(poolname, "IIsApplicationPool");newPool.CommitChanges();//修改应用程序池配置if (iisVersion >= 7){ Microsoft.Web.Administration.ServerManager sm = new Microsoft.Web.Administration.ServerManager(); sm.ApplicationPools[poolname].ManagedRuntimeVersion = "v2.0"; sm.ApplicationPools[poolname].ManagedPipelineMode = Microsoft.Web.Administration.ManagedPipelineMode.Classic; sm.CommitChanges();}
虚拟目录和应用程序的安装:
DirectoryEntry rootEntry = new DirectoryEntry("IIS://localhost/W3SVC/1/root");DirectoryEntry newVirDir = rootEntry.Children.Add(svcName, "IIsWebVirtualDir");newVirDir.Invoke("AppCreate", true);newVirDir.Properties["Path"].Value = 部署路径;newVirDir.Properties["DefaultDoc"].Value = 默认文档; newVirDir.Properties["AppFriendlyName"][0] = 应用程序名; newVirDir.Properties["AppPoolId"][0] = 应用程序池名称; newVirDir.Properties["DirBrowseFlags"].Value = false; //目录访问newVirDir.Properties["EnableDefaultDoc"][0] = true; //启用默认文档newVirDir.Properties["AccessRead"][0] = true; //读取newVirDir.Properties["AccessScript"][0] = true; //脚本newVirDir.Properties["AccessExecute"][0] = true; //可执行newVirDir.CommitChanges();//对于所有操作需要使用CommitChanges提交rootEntry.CommitChanges();// iis6版本的处理方法if (iisVersion <= 6){ newVirDir.Properties["ScriptMaps"].Value = Runver2_ScriptMap; newVirDir.CommitChanges(); rootEntry.CommitChanges();}
在部署站点时需要指定站点运行的环境,是2.0的,还是4.0的,这部分是通过Properties的ScriptMaps属性控制
Properties["ScriptMaps"]的值是PropertyValueCollection集合类型
有的站点提出将集合中的值项,其中的v1.1.4322替换为v2.0.50727,之后在重新赋值提交,实验证明该方法没能实现运行环境的变更。
由此启发将手动更改后的站点中,关于Properties["ScriptMaps"]项值读取出来后,作为常量存储,然后根据需求整体赋值。
下面是v1.1和v2.0的ScriptMaps值,服务器环境是.net framework 3.5:
1.1.4322
.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\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ascx,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ashx,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.asmx,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.aspx,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.axd,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.vsdisco,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.rem,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.soap,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.config,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.cs,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.csproj,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.vb,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.vbproj,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.webinfo,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.licx,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.resx,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.resources,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
2.0.50727
.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
.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
由此可以证明网上所说的替换v1.1.4322和v2.0.50727方法不可用,缺少很多的配置
- C#对不同版本IIS的控制方法
- 2003 下IIS对不同版本的.Net FrameWork 问题
- C#如何实现方法的版本控制?
- iis不同版本对应的操作系统
- C#如何进行方法(或者函数)的版本控制?
- 对版本控制的思考
- IIS不同版本的WCF 的寄宿环境
- 关于C#控制IIS
- 利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法
- 利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法
- 在不同版本的 IIS 上使用 ASP.NET MVC
- 在不同版本的IIS下使用ASP.NET MVC
- 在不同版本的 IIS 上使用 ASP.NET MVC
- 在不同版本的 IIS 上使用 ASP.NET MVC
- 在不同版本的 IIS 上使用 ASP.NET MVC
- IIS同时集成多个Resin(不同版本)的注意事项
- 在不同版本的 IIS 上使用 ASP.NET MVC
- JDk版本不同对系统的影响
- [ExtJS5学习笔记]第二十三节 Extjs5中表格gridpanel的列格式设置
- 算法--快速排序
- 柯震东经纪人柴智屏被大陆限制出境 疑涉刑事犯罪
- MySQL体系结构详解
- 3.4.1.2 在 F# 中传递函数作为参数值
- C#对不同版本IIS的控制方法
- BestCoder No.11 总结
- 东莞"女德班"被责令停办 学员被遣散并退回学费
- iOS应用崩溃日志分析
- 点击轮播图片左右按钮,实现轮播效果
- Oracle非关键文件恢复,redo、临时文件、索引文件、密码文件
- 中国最小黑客:为不做作业 黑掉学校系统
- Android 基于Netty的消息推送方案之概念和工作原理(二)
- PHP的输出缓存区