Iis 7 在IIS7中以编程方式安装ISAPI扩展
我想以编程方式在Windows7上的IIS7中安装ISAPI扩展 (控制面板->程序和功能->打开或关闭windows功能->IIS->WWW->应用程序开发功能->ISAPI扩展) 基本上,我想实现以下DISM命令所能实现的功能 dism/online/Enable功能/功能名称:IIS ISAPIExtensions 我尝试使用Microsoft.Web.Administration,下面是代码Iis 7 在IIS7中以编程方式安装ISAPI扩展,iis-7,isapi,isapi-extension,Iis 7,Isapi,Isapi Extension,我想以编程方式在Windows7上的IIS7中安装ISAPI扩展 (控制面板->程序和功能->打开或关闭windows功能->IIS->WWW->应用程序开发功能->ISAPI扩展) 基本上,我想实现以下DISM命令所能实现的功能 dism/online/Enable功能/功能名称:IIS ISAPIExtensions 我尝试使用Microsoft.Web.Administration,下面是代码 using (ServerManager serverManager = new Server
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection gloabalmodulesSection = config.GetSection("system.webServer/globalModules");
ConfigurationElementCollection globalModulesCollection = gloabalmodulesSection.GetCollection();
ConfigurationElement isapiExtension = globalModulesCollection.CreateElement("add");
isapiExtension.SetAttributeValue("name", "IsapiModule");
isapiExtension.SetAttributeValue("image", "%windir%\\System32\\inetsrv\\isapi.dll");
globalModulesCollection.Add(isapiExtension);
ConfigurationSection modulesSection = config.GetSection("system.webServer/modules");
ConfigurationElementCollection modulesCollection = modulesSection.GetCollection();
ConfigurationElement isapiModule = modulesCollection.CreateElement("add");
isapiModule.SetAttributeValue("name", "IsapiModule");
modulesCollection.AddAt(10,isapiModule);
ConfigurationSection handlersSection = config.GetSection("system.webServer/handlers");
ConfigurationElementCollection handlersCollection = handlersSection.GetCollection();
ConfigurationElement isapiHandler = handlersCollection.CreateElement("add");
isapiHandler.SetAttributeValue("name", "ISAPI-dll");
isapiHandler.SetAttributeValue("path", "*.dll");
isapiHandler.SetAttributeValue("verb", "*");
isapiHandler.SetAttributeValue("modules", "IsapiModule");
isapiHandler.SetAttributeValue("resourceType","File");
isapiHandler.SetAttributeValue("requireAccess","Execute");
isapiHandler.SetAttributeValue("allowPathInfo","true");
handlersCollection.AddAt(0, isapiHandler);
serverManager.CommitChanges();
}
它会更新applicationHost.config。当我比较用我的代码更新的applicationHost.config和用DISM更新的applicationHost.config时,它们几乎相同。唯一的区别是,上面的代码没有在模块部分设置“lockItem=true”,因为这样写会产生错误。但我认为这不重要
但是上面的代码没有安装该功能,DISM安装了。有什么区别
我做了另一个测试
1) 使用DISM启用ISAPI扩展
2) 已保存applicationHost.config的副本
3) 使用DISM禁用ISAPI扩展
4) 用已保存的复制文件覆盖aplicationhost.config
它不安装ISAPI扩展功能。因此DISM不仅更新applicationHost.config,还做了更多的事情。那么它做了什么?我如何通过编程实现同样的功能