Я пытаюсь синхронизировать сайт 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