编程检查IIS7兼容性角色是否在IIS7中启用/禁用

问题描述:

如何在IIS7上启用/禁用IIS6兼容性角色时如何检查C#?编程检查IIS7兼容性角色是否在IIS7中启用/禁用

您可以检查注册表读取值

HKEY_LOCAL_MACHINE\Software\Microsoft\InetStp\Components\WMICompatibility 

,或者可以输出中servermanagercmd的内容到一个XML文件,并解析文件寻找IIS6兼容性组件

ServerManagerCmd -query [SaveFile.xml] 

如果您在R2上执行此操作,servermanagercmd现在已被弃用,所以您可能想使用powershell来实现相同的检查。 下面是一些PowerShell的例子,在这种情况下远程完成http://www.techmumbojumblog.com/?p=217

从以前的答案的WMI方法可能是一样好,espcialy如果你有更多的配置任务,对IIS进行,验证了兼容性工具后安装。

顺便说一句,如果你发现没有被兼容组件处理的配置设置,这里是我发现从C#这样做,我在配置通过WMI早在IIS6在网站级别和下(网站运行良好,虚拟目录和池),但为了配置Web服务器级别,我必须使用iis7安装的api,System32 \ inetsrv中的Microsoft.Web.Administration.dll。

using Microsoft.Web.Administration; 
+0

http://www.techmumbojumblog.com/?p=217获取404错误 – Kiquenet 2014-01-13 10:18:23

+0

使用Powershell的最终解决方案? – Kiquenet 2014-01-13 11:49:05

您可能可以通过以编程方式查询IIS7的WMI提供程序来完成此操作。 http://learn.iis.net/page.aspx/162/managing-sites-with-iis-7039s-wmi-provider/

我不知道你是否可以通过powershell做到这一点。

+0

任何解决方案使用PowerShell? – Kiquenet 2014-01-13 11:48:39

请有人给出一个很好的答案! 动机,这里是一个非常不好回答=)

// Ok, this is stupid, but I can't find any other way to do this 
// Detect whether we're in integrated mode or not 
#warning GIANT HACK FOR IIS7 HERE 
try 
{ 
    var x = HttpContext.Current.CurrentNotification; 
    _isIntegratedMode = true; 
} 
catch (PlatformNotSupportedException) 
{ 
    _isIntegratedMode = false; 
} 
catch (NullReferenceException) 
{ 
    _isIntegratedMode = true; 
} 

这正是我们的代码目前确实摸不着头脑(是的,我知道这是我很不 - 因此警告)