Назад | Перейти на главную страницу

Как обновить поставщик конфигурации machineConfig64 .Net Framework

Я пытаюсь синхронизировать сайт IIS со старого Windows Server 2008 R2 с IIS7.5 на новый Windows Server 2012 R2 с IIS8.5. Я делаю это с помощью WDeploySnapin3.0 PowerShell Snapin

теперь я получил следующую ошибку:

Sync-WDSite : the versions of the .NET Framework-configuration provider
(machineConfig64) differ from source (2.0) and destination (4.0). More 
information on: http://go.microsoft.com/fwlink
/?LinkId=221672#ERROR_FRAMEWORK_VERSIONS_DO_NOT_MATCH.

Здесь можно найти два решения этой ошибки: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FRAMEWORK_VERSIONS_DO_NOT_MATCH.

Первое решение мне не подходит, потому что я не использую msdeploy.exe инструмент.

Второе решение говорит мне отредактировать файлы конфигурации на исходной машине, что я и сделал. Я изменил msdepsvc.exe.config из этого:

<configuration>
  <startup  useLegacyV2RuntimeActivationPolicy="true" >
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>

к этому:

<configuration>
  <startup  useLegacyV2RuntimeActivationPolicy="true" >
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
</configuration>

а также msdeploy.exe.config из этого:

<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
    <supportedRuntime version="v4.0" />
  </startup>
</configuration>

к этому:

<configuration>
  <startup>
    <supportedRuntime version="v4.0" />
  </startup>
</configuration>

и после этого я перезапустил wmsvc служба net stop wmsvc ; net start wmsvc но не вышло, ошибка все равно возникает

Теперь я просто хочу обновить версию своего исходного сервера. Как я могу это сделать? .NET Framework 4.6 установлен на исходном сервере, мне просто нужно где-то отредактировать конфигурацию? Или мне нужно обновить структуру управления?

Спасибо!

Редактировать: Я также попытался просто использовать запись v2.0 в файлах конфигурации (как было предложено Microsoft), но это также не сработало. Я также не понимаю, почему он говорит, что исходный сервер использует .NET 2.0 - пул приложений и само приложение используют 4.0+

ответ на эту проблему состоит в том, чтобы не «обновлять» поставщика machineConfig64, а сообщить PowerShell, какой именно поставщик выбрать, в виде хеш-таблицы. поместите хеш-таблицу как -sourcesettings и -destinationsettings параметр

[hashtable]$settings = @{
    'machineconfig32.netfxversion' = 2
    'machineconfig64.netfxversion' = 2
    'rootwebconfig32.netfxversion' = 2
    'rootwebconfig64.netfxversion' = 2
}

[...] # some more code

$sync = Sync-WDSite $Name $Name -sitephysicalpath $spp `
                                -SourcePublishSettings $publishsettings `
                                -IncludeApppool `
                                -WarningAction Continue `
                                -ErrorAction Stop `
                                -sourcesettings $settings `
                                -destinationsettings $settings `
                                -debug