2010-03-31 87 views

回答

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

从以前的答案的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

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

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