【发布时间】:2026-01-29 18:50:02
【问题描述】:
我需要在我的产品安装过程中检测是否安装了 WCF Http/Non-Http 激活组件。我该怎么做?
谢谢。
【问题讨论】:
我需要在我的产品安装过程中检测是否安装了 WCF Http/Non-Http 激活组件。我该怎么做?
谢谢。
【问题讨论】:
对于 IIS7,检查以下注册表项:
HKEY_LOCAL_MACHINE\Software\Microsoft\InetStp\Components\
对于以下组件:
从此页面:http://learn.iis.net/page.aspx/135/discover-installed-components/
更新:由于即使未安装组件,上述情况也是如此,请尝试从命令行运行此命令:
sc查询nettcpactivator
如果服务已停止或不存在,则可能未安装 WCF 非 HTTP 激活组件。要安装它们,请运行以下命令:
pkgmgr /iu: WCF-NonHTTP-Activation
【讨论】:
对于带有 Windows Server 2012(可能还有 Windows 8)的 IIS8,您可以检查此注册表项(对于 .NET 4.5)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ServerManager\ServicingStorage\ServerComponentCache\NET-WCF-HTTP-Activation45\InstallState
0 表示未安装,1 表示已安装。
【讨论】:
您还可以使用 PowerShell 启用 WCF Http/Non-Http 激活组件:
Import-Module ServerManager
Add-WindowsFeature NET-HTTP-Activation,NET-Non-HTTP-Activ
这样您就不必弄乱 Windows 注册表。有关使用 PowerShell 添加 Windows 功能的更多信息:http://technet.microsoft.com/en-us/library/cc732263.aspx#BKMK_powershell
【讨论】:
您可能应该使用 Get-WindowsFeature powershell commandlet。您可以通过调用来检查 Server 2012 上是否存在 .NET Framework 4.5 WCF Services for HTTP Activation:
$wcfActivationFeature = Get-WindowsFeature -name NET-WCF-HTTP-Activation45
$wcfActivationFeature.Installed
【讨论】:
HTTP 激活的注册表项是:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup\Windows Communication Foundation\HTTPActivation
,对于non-HTTP,激活是检查服务NetTcpActivation 或NetPipeActivator 是否存在于机器上并且正在运行。
【讨论】: