Использование 64-битного источника и 32-битного места назначения с поставщиком appHostConfig не поддерживается - PullRequest
2 голосов
/ 11 января 2020

Я пытаюсь выполнить автоматическое c развертывание с MSDeploy, но как только я перешел на использование пула приложений, я получил следующую ошибку:

Using a 64-bit source and a 32-bit destination with provider appHostConfig is not supported.

При развертывании мне нужно указать имя пула приложений для использовать. Сервер 64 битный.

MSBuild

"%SOAB_MSBUILD_EXE%" "%SOAB_LOCAL_APP_PATH%\WebAPI\WebAPI.csproj" /t:Package /p:Configuration=Debug;PublishProfile=CI /p:VisualStudioVersion=16.0 /p:IncludeIisSettings=true /p:IncludeAppPool=true

MSDeploy

CALL "%SOAB_LOCAL_APP_PATH%\WebAPI\obj\Debug\Package\WebAPI.deploy.cmd" /Y "-setParam:'IIS Web Application Name'='Default Web Site\WebAPI'" "-setParam:'IIS Web Application Pool Name'='MyAppPool'"

MSBuild Path

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\amd64\msbuild.exe

Все, что заключено в %%, - это переменные, заменяемые во время выполнения сборкой server.

Все работало, как и ожидалось, пока я не попытался изменить ApplicationPool с помощью MSDeploy. Чтобы пул приложений работал, я добавил следующие параметры в команду MSBuild /p:IncludeIisSettings=true /p:IncludeAppPool=true и включил имя / значение setParam в команду MSDeploy. Я не могу использовать DefaultAppPool. Любая помощь приветствуется относительно того, что я делаю неправильно, заранее спасибо.

Редактировать: WebAPI.SetParameters. xml Параметры, объявленные в obj \ debug \ package

<?xml version="1.0" encoding="utf-8"?>
<parameters>
  <setParameter name="IIS Web Application Name" value="Default Web Site/WebAPI_deploy" />
  <setParameter name="IIS Web Application Pool Name" value="DefaultAppPool" />
  <setParameter name="IisVirtualDirectoryPhysicalPath" value="c:\_Files\MyApplication\WebAPI_deploy" />
</parameters>

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

-------------------------------------------------------
Start executing msdeploy.exe
-------------------------------------------------------
"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package='c:\_Files\MyApplication\WebAPI\obj\Debug\Package\WebAPI.zip' -dest:auto,includeAcls="False" -verb:sync -enableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"c:\_Files\MyApplication\WebAPI\obj\Debug\Package\WebAPI.SetParameters.xml" -setParam:'IIS Web Application Name'='Default Web Site\WebAPI' -setParam:'IIS Web Application Pool Name'='MyAppPool' -verbose
Verbose: Performing synchronization pass #1.
Verbose: Parameter entry 'IIS Web Application Name/1' is applicable to 'appHostConfig/Default Web Site/WebAPI' because of its scope.
Verbose: Parameter entry 'IIS Web Application Name/2' is applicable to 'contentPath/c:\_Files\MyApplication\WebAPI\obj\Debug\Package\PackageTmp' because of its scope.
Verbose: Parameter entry 'IIS Web Application Name/3' could not be applied anywhere.
Verbose: Parameter entry 'IIS Web Application Name/1' is applicable to 'appHostConfig/Default Web Site/WebAPI' because of its scope.
Verbose: Parameter entry 'IIS Web Application Name/2' is applicable to 'contentPath/c:\_Files\MyApplication\WebAPI\obj\Debug\Package\PackageTmp' because of its scope.
Verbose: Parameter entry 'IIS Web Application Name/3' could not be applied anywhere.
Verbose: Parameter entry 'IIS Web Application Name/1' is applicable to 'appHostConfig/Default Web Site/WebAPI' because of its scope.
Verbose: Parameter entry 'IIS Web Application Name/2' is applicable to 'contentPath/c:\_Files\MyApplication\WebAPI\obj\Debug\Package\PackageTmp' because of its scope.
Verbose: Parameter entry 'IIS Web Application Name/3' could not be applied anywhere.
Verbose: No backup was executed.
Verbose: Parameter entry 'IIS Web Application Name/1' is applicable to 'appHostConfig/Default Web Site/WebAPI' because of its scope.
Verbose: Parameter entry 'IIS Web Application Name/2' is applicable to 'contentPath/c:\_Files\MyApplication\WebAPI\obj\Debug\Package\PackageTmp' because of its scope.
Verbose: Parameter entry 'IIS Web Application Name/3' could not be applied anywhere.
Info: Adding sitemanifest (sitemanifest).
Verbose: Parameter entry 'IIS Web Application Name/1' is applicable to 'appHostConfig/Default Web Site/WebAPI' because of its scope.
Verbose: Parameter entry 'IIS Web Application Name/2' is applicable to 'contentPath/c:\_Files\MyApplication\WebAPI\obj\Debug\Package\PackageTmp' because of its scope.
Verbose: Parameter entry 'IIS Web Application Name/3' could not be applied anywhere.
ERROR: Error: Using a 64-bit source and a 32-bit destination with provider appHostConfig is not supported.
ERROR: Error count: 1.

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Перед исходным постом я попытался удалить Web Deploy и установить 64-битную версию. По какой-то причине при установке 64-разрядной версии Web Deploy также была установлена ​​32-разрядная версия. У моей команды было установлено несколько версий на сервере. Наконец, я удалил все записи реестра и полностью удалил все, что связано с Web Deploy, включая службы. Я переустановил 64-разрядную версию Web Deploy (полная установка со службами) и получил то же сообщение об ошибке. Я проверил «Program Files» и «Program Files x86» и увидел, что Web Deploy есть в обоих. Я переключился с использования WebAPI.deploy.cmd на MSDeploy.exe напрямую. Причина в том, что файл WebAPI.deploy.cmd все еще использовал 32-разрядную версию Web Deploy. Перейдя непосредственно к использованию MSDeploy.exe, я смог контролировать, какая версия 32 или 64-разрядная. Я получил новую ошибку и решил ее. Все, что мне сейчас нужно, это ввести пароль для удостоверения пула приложений.

1 голос
/ 14 января 2020

Ошибка говорит о проблеме. Вы должны использовать версию 64-bit в источнике и версию 64-bit в месте назначения.

Вы используете версию Microsoft Visual Studio 32-bit. Там вам нужно установить 64-bit из Microsoft Visual Studio. Тогда все будет работать нормально. А также убедитесь, что ваша Microsoft Web Deploy также 64-bit версия.


Альтернативный метод -: С другой стороны, эта ошибка возникает из-за appHostConfig syn c между источником и пункт назначения. Выполните эту команду, чтобы проигнорировать ошибку.

-skip:attributes.name="AppWarmupModule"

В MSdeploy -skip:<arg settings> основная задача ключевого слова - указать указанный объект, который нужно пропустить во время синхронизации .

...