Как программно проверить компоненты активации WCF Http/Non-Http?
Мне нужно определить, установлены ли компоненты активации WCF Http/Non-Http во время установки моего продукта. Как я могу это сделать?
спасибо.
5 ответов
для IIS7, проверьте следующий раздел реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\InetStp\Components\
для следующих компонентов:
- Модель Процесса-ProcessModel
- .NET Environment-NetFxEnvironment
- API Конфигурации-WASConfigurationAPI
с этой страницы: http://learn.iis.net/page.aspx/135/discover-installed-components/
обновление: так это верно даже тогда, когда компоненты не установлены, попробуйте запустить эту команду из командной строки:
sc запрос nettcpactivator
Если служба остановлена или не существует, компоненты активации WCF, отличные от HTTP, скорее всего, не установлены. Чтобы установить их, выполните следующую команду:
диспетчер пакетов pkgmgr /МЕ: WCF-NonHTTP-активация
для IIS8 с Windows Server 2012 (и, вероятно, Windows 8), вы можете проверить этот раздел реестра (для .NET 4.5)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ServerManager\ServicingStorage\ServerComponentCache\NET-WCF-HTTP-Activation45\InstallState
ноль означает не установлен, и 1 означает установлен.
вы также можете использовать PowerShell для включения компонентов активации WCF Http/Non-Http:
Import-Module ServerManager
Add-WindowsFeature NET-HTTP-Activation,NET-Non-HTTP-Activ
таким образом, вам не придется возиться с реестром Windows. Дополнительные сведения о добавлении функции Windows с помощью PowerShell:http://technet.microsoft.com/en-us/library/cc732263.aspx#BKMK_powershell
вероятно, вам следует использовать командлет Get-WindowsFeature powershell. Проверить наличие на сервере 2012 служб WCF .NET Framework 4.5 для активации HTTP можно по телефону:
$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 и для активации без HTTP проверяет, существует ли служба NetTcpActivation или NetPipeActivator на компьютере и выполняется.