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

ОШИБКА: версия поставщика конфигурации .NET Framework (machineConfig64) отличается для источника (2.0) и назначения (4.0).

Сначала я начну с того, что этот вопрос похож на этот вопрос: Невозможно использовать msdeploy для синхронизации 2 веб-сайтов - ERROR_FRAMEWORK_VERSIONS_DO_NOT_MATCH.

На самом деле мой вариант использования отличается ... но, несмотря на это, я все еще пытался получить общую картину и следовать полученным там ответам. Однако это не сработало ...

Позволь мне объяснить.

В моем случае я пытаюсь перенести сайт, работающий на IIS 7.5 и Windows Server 2008 на другую машину работает IIS 10 и Windows Server 2016.

Я нашел хороший подробный учебник под названием Шаги по переносу веб-сайтов с IIS 7.5 на IIS 10 что идеально соответствовало моей ситуации, и я внимательно следил за ней, установив все необходимые роли и особенности на новом сервере и Веб-развертывание 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#ERROR_FRAMEWORK_VERSIONS_DO_NOT_MATCH

Я прочитал указанную выше страницу документации, а также другую статью по адресу: 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 решила, что они должны использовать слова «клиент» и «сервер», и никогда не ясно, когда они относятся к исходному серверу и конечному серверу!

Итак, единственное, что я мог сделать, это внести здесь изменения, перезапустить службу, посмотреть, работает ли, внести изменения там, перезапустить службу, посмотреть, работает ли она ... и так далее ... пока я не стану все больше и больше сбиваться с толку и разочаровываться .

И еще одна вещь, которая сводит меня с ума, - это то, что на сайте origin используется .NET Framework 4.0 Classic пул приложений, но ошибка сообщает, что источник находится в .NET 2.0. ??? Как так?

Что ж, я был бы очень признателен, если бы кто-нибудь мог дать мне небольшое руководство, чтобы понять, что я делаю не так и как я могу это исправить ... Заранее большое спасибо!

Отвечая на это сам:

Проблема и источник путаницы заключались в том, что я смешивал подходы к веб-развертыванию на основе консоли и графического интерфейса пользователя (IIS).

В частности, я правильно изменял msdeploy.exe.config для Web Deploy, чтобы использовать .NET v4.0 в источнике, но тогда я не использовал msdeploy.exe командная строка для фактического развертывания, и вместо этого я использовал контекстное меню веб-сайта IIS развернуть> экспорт, который не считывает конфигурацию из указанного выше файла, но позволяет настраивать эти параметры в диалоговом окне во время процесса экспорта, используя конфигурация машины (32 и 64), которые по умолчанию были установлены на 2,0.

Поэтому я исправил это, просто сняв отметку с этих параметров в диалоговом окне экспорта, и все было хорошо импортировано на конечный компьютер.