编程检查IIS7中是否启用了IIS6兼容性角色

时间:2010-03-31 07:08:28

标签: c# iis-7 iis-6

如果在IIS7上启用/禁用IIS6兼容性角色,我如何检查C#?

3 个答案:

答案 0 :(得分:3)

您可以检查读取注册表中的值

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

在验证兼容性工具是否已安装之后,如果您在IIS上执行了更多配置任务,那么前一个答案中的WMI方法也可能很好用。

顺便说一句,如果你确实找到了兼容性组件未处理的配置设置,这就是我从C#中发现的,我在iis6中通过wmi配置的工作在网站级别和网站下工作正常(网站,虚拟目录和池),但是为了配置web服务器级别,我不得不使用安装了iis7的api,来自System32 \ inetsrv的Microsoft.Web.Administration.dll。

using Microsoft.Web.Administration;

答案 1 :(得分:1)

请有人给出一个好的答案! 作为动机,这是一个非常糟糕的答案=)

// 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;
}

这就是我们的代码目前正在做的事情(是的,我知道这是非常糟糕的 - 因此警告)

答案 2 :(得分:0)

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

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