ОШИБКА. Версия поставщика конфигурации.NET Framework (machineConfig64) отличается в исходном (2.0) и целевом (4.0)
Сначала я скажу, что этот вопрос похож на этот вопрос: невозможно использовать msdeploy для синхронизации двух веб-сайтов - ERROR_FRAMEWORK_VERSIONS_DO_NOT_MATCH.
На самом деле мой вариант использования отличается... но, несмотря на это, я все еще пытался получить общую картину и следовать там ответам. Однако это не сработало...
Позволь мне объяснить.
В моем случае я пытаюсь перенести веб-сайт, работающий на IIS 7.5 и Windows Server 2008, на другой компьютер с IIS 10 и Windows Server 2016.
Я нашел хороший подробный учебник под названием " Шаги по миграции веб-сайтов с IIS 7.5 на IIS 10", который идеально соответствовал моей ситуации, и я тщательно следовал ему, устанавливая все необходимые роли и функции на новом сервере и Web Deploy 3.6 на обоих серверах (которые интегрировали правильно на обоих менеджерах IIS, добавив опции "Развернуть" в контекстное меню).
Затем мне удалось успешно экспортировать веб-сайт, но когда я попытался импортировать его в IIS 10, операция импорта остановилась с этой ошибкой:
Версия поставщика конфигурации.NET Framework (machineConfig64) различается по источнику (2.0) и месту назначения (4.0).
ERROR_FRAMEWORK_VERSIONS_DO_NOT_MATCH
Узнайте больше по адресу: https://docs.microsoft.com/en-us/iis/publish/troubleshooting-web-deploy/web-deploy-error-codes
Теперь я прочитал вышеупомянутую страницу документации и другую статью по адресу: https://blogs.msdn.microsoft.com/ericparvin/2015/04/03/error_framework_versions_do_not_match/
и, как советовали, я попытался инвертировать положение
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
и в msdeploy.exe.config, и в msdepsvc.exe.config, как на исходном, так и на целевом сервере, а также перезапустили службу wmsvc.
Однако независимо от того, какую комбинацию изменений я пробую, я получаю одно и то же сообщение об ошибке.
Я также снова экспортировал веб-сайт после применения этих изменений, но импорт снова не удался с той же ошибкой.
Теперь я должен признать, что я не совсем уверен, что получил все это за пояс... И в официальных, и в неофициальных статьях по документации никогда не разъясняется, нужно ли вам редактировать исходный или конечный файл msdeploy.exe.config и msdepsvc.exe.config. Это все дано как должное! Более того, по какой-то причине Microsoft решила, что им нужно использовать слова "клиент" и "сервер", и никогда не ясно, когда они ссылаются на исходный сервер и конечный сервер!
Таким образом, единственное, что я мог сделать, это внести изменения здесь, перезапустить службу, посмотреть, работает ли, внести изменения там, перезапустить службу, посмотреть, работает ли она... и так далее... пока я все больше и больше не растерялся и не разочаровался,
И еще одна вещь, которая сводит меня с ума, это то, что на исходном веб-сайте используется пул приложений .NET Framework 4.0 Classic, однако ошибка приводит к тому, что источник находится на .NET 2.0.??? Как так?
Что ж, я был бы очень признателен, если бы кто-нибудь дал мне небольшое руководство, чтобы понять, что я делаю неправильно и как я могу это исправить... Заранее большое спасибо!
1 ответ
Отвечая на это сам:
Проблема и источник путаницы заключались в том, что я совмещал подходы Web Deploy на основе консоли и GUI (IIS).
В частности, я правильно модифицировал msdeploy.exe.config для Web Deploy, чтобы использовать.NET v4.0 в исходном коде, но тогда я не использовал командную строку msdeploy.exe для фактического развертывания, а вместо этого использовал контекст веб-сайта IIS. menu deploy> export, который не считывает конфигурацию из вышеуказанного файла, но позволяет настроить эти параметры в диалоговом окне во время процесса экспорта, используя параметры конфигурации машины (32 и 64), для которых по умолчанию было установлено значение 2.0.
Поэтому я исправил это, просто сняв эти параметры в диалоговом окне экспорта, и все было красиво импортировано на целевой машине.