Как передать sitename в ProjectName.развертывать.УМК

я пытаюсь запустить имя проекта.deply.cmd, который генерируется MSBuild при параметре это. Один из аргументов "ComputerName" должен быть передан как https://WebServer01:8172/MSDeploy.axd?SiteName=MySiteName. Моя командная строка будет

ProjectName.deploy.cmd /Y /M:https://WebServer01:8172/MSDeploy.axd?Site=MySiteName 
                       -AllowUntrusted /U:DeployUserName /P:Password /A:Basic

возвращает

Error: Unrecognized argument 'MySiteName'. All arguments must begin with "-".

фактическая команда, которая выполняется

"C:Program FilesIISMicrosoft Web Deploy V3msdeploy.exe" 
    -source:package='Y:ProjectName.zip'
    -dest:auto,computerName='https://WebServer01:8172/MSDeploy.axd?Site',userName='DeployUserName',password='Password',authtype='Basic',includeAcls='False'
    -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -setParamFile:"Y:ProjectName.SetParameters.xml"
    MySiteName
    -AllowUntrusted

обратите внимание, что аргумент to / M https://WebServer01:8172/MSDeploy.axd?Site=MySiteName разделен на два аргумента и, таким образом, создавая computerName='https://WebServer01:8172/MSDeploy.axd?Site' и дополнительный аргумент MySiteName.

я прошел через сбой запуска пакета развертывания с указанными параметрами в Visual Studio 2010 с пакетом обновления 1 но это заботится только о ArgMsDeployAdditionalFlags а не аргументы, например /M:ComputerName.

когда SiteName не передается, я могу выполнить развертывание с пользователем, у которого были права администратора на сервере, но когда используется стандартный пользователь IIS DeployUserName, я получаю 401

ProjectName.deploy.cmd /Y /M:https://WebServer01:8172/MSDeploy.axd
                       -AllowUntrusted /U:DeployUserName /P:Password /A:Basic

сервер возвращает 401

Error Code: ERROR_USER_UNAUTHORIZED
More Information: Connected to the remote computer ("WebServer01") using the Web 
Management Service, but could not authorize. Make sure that you are using the
correct user name and password, that the site you are connecting to exists, and
that the credentials represent a user who has permissions to access the site.
Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED.

Error: The remote server returned an error: (401) Unauthorized.

разрешения для этого пользователя, как опубликовать из VS2012 С MSDeploy профиль с помощью этого пользователя работает просто отлично. Я также могу построить msdeploy.exe команда, и это также работает нормально. Я должен использовать ProjectName.deploy.cmd как это производится в рамках Team Build С TFS2010.

2 ответов


вы пробовали цитировать аргумент?

ProjectName.deploy.cmd /Y "/M:https://WebServer01:8172/MSDeploy.axd?Site=MySiteName" 
                   -AllowUntrusted /U:DeployUserName /P:Password /A:Basic

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

Как упоминалось в комментариях, цитирование аргумента не будет работать из-за ошибки в том, как анализируются аргументы, из MS docs:

на момент написания, из-за ошибки в конвейере веб-публикации (WPP), вы не можете запустить .развертывать.cmd-файл с использованием адреса конечной точки что включает строку запроса. В этом случае необходимо развернуть ваш веб-пакет с помощью MSDeploy.ехе напрямую.

источник: https://docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/web-deployment-in-the-enterprise/deploying-web-packages

поэтому вместо этого вы должны использовать MSDeploy напрямую. Эквивалентно развертыванию.cmd аргументы в вопросе:

MSDeploy.exe -source:package='<fullPathToDeployable>\<projectName>.zip' 
-dest:auto,computerName="https://<ipOrDnsName>:8172/MSDeploy.axd",userName="<userName>,password="<pwd>",authtype="Basic",includeAcls="False" 
-verb:sync 
-disableLink:AppPoolExtension 
-disableLink:ContentExtension 
-disableLink:CertificateExtension 
-setParamFile:"<fullPathToDeployable>\<projectName>.SetParameters.xml"  
-setParam:name="IIS Web Application Name",value="<siteName>" 
-AllowUntrusted

(заменить слова в квадратных скобках)