我正在尝试将 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 条目(按照微软的建议),但也没有用。我也不明白为什么它说源服务器使用 .NET 2.0 - 应用程序池和应用程序本身使用 4.0+
答案1
这个问题的答案不是“更新”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