Можно ли публиковать / развертывать веб-пакет, используя учетную запись без прав администратора, только из командной строки?

Название нуждается в некотором расширении. Таким образом, я считаю невозможным:

  • Развертывание веб-сайта на хосте IIS 8
  • Использование пакета веб-развертывания
  • Использование готовых функций публикации в VS 2013
  • Использование пользователя IIS Manager без прав администратора, которому делегировано разрешение на развертывание на данном сайте.

Кажется, все сводится к одной маленькой детали, которая все запутывает, но я должен описать свой процесс до того момента, когда все развалится.

Я создаю профиль публикации Publish в VS 2013 настроен для публикации в веб-пакет. Затем я запускаю следующую команду в командной строке разработчика:

msbuild Solution.sln /t:Build /p:DeployOnBuild=true;PublishProfile=Publish;IsDesktopBuild=false

Это проходит процесс сборки, и теперь я вижу ожидаемый пакет и файлы развертывания в _PublishedWebsites\Web_Package папка. Мой следующий шаг - запустить это из папки Web_Package:

Web.deploy.cmd /Y /M:https://example.blah:8172/MsDeploy.axd /U:user /P:p@44w0rd /A:Basic

Здесь возникает проблема. В результате получается следующая расширенная команда (отформатированная для удобства чтения):

msdeploy.exe
    -source:package='.\Web.zip'
    -dest:auto,computerName="https://example.blah:8172/MsDeploy.axd",userName="user",password="p@44w0rd",authtype="Basic",includeAcls="False"
    -verb:sync 
    -disableLink:AppPoolExtension 
    -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -setParamFile:".\Web.SetParameters.xml"

чье исполнение приводит к:

Error Code: ERROR_USER_UNAUTHORIZED
More Information: Connected to the remote computer ("example.blah") 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.

Я могу решить эту проблему, вручную запустив только расширенную команду и пометив site параметр для URL-адреса MsDeploy.axd, например:

msdeploy.exe
    -source:package='.\Web.zip'
    -dest:auto,computerName="https://example.blah:8172/MsDeploy.axd?site=example.blah",userName="user",password="p@44w0rd",authtype="Basic",includeAcls="False"
    -verb:sync 
    -disableLink:AppPoolExtension 
    -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -setParamFile:".\Web.SetParameters.xml"

Тем не менее, я не вижу никакого способа установить это через Web.deploy.cmd, который был автоматически сгенерирован MSBuild. Если я попробую это:

Web.deploy.cmd /Y /M:https://example.blah:8172/MsDeploy.axd?site=example.blah /U:user /P:p@44w0rd /A:Basic

Это приводит к этому (опять же, отформатирован для удобства чтения):

msdeploy.exe
    -source:package='D:\DEV\Solution\Web\bin\_PublishedWebsites\Web_Package\Web.zip'
    -dest:auto,computerName="https://example.blah:8172/MsDeploy.axd?site",userName="user",password="p@44w0rd",authtype="Basic",includeAcls="False"
    -verb:sync 
    -disableLink:AppPoolExtension 
    -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -setParamFile:"D:\DEV\Solution\Web\bin\_PublishedWebsites\Web_Package\Web.SetParameters.xml"  example.blah
Error: Unrecognized argument 'example.blah'. All arguments must begin with "-".
Error count: 1.

Я могу выполнить этот процесс нормально, используя учетную запись администратора. Но кажется, что не администратор требует это значение site= querystring, и автоматически сгенерированный Web.deploy.cmd просто не имеет этого.

Я что-то упускаю здесь очевидное? Есть ли разрешение, которое мне не хватает на стороне управления IIS? Я убедился, что настроил правило делегирования службы управления, как указано в этом сообщении в блоге.

2 ответа

Решение

Я не могу найти способ обойти это, используя процесс, который я изложил. Мое решение здесь состоит в том, чтобы просто взять расширенную командную строку MSDeploy.exe и использовать ее непосредственно вместо сгенерированного *.deploy.cmd файл.

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

Вы можете поместить параметр /M: в кавычки так:

Web.deploy.cmd /Y "/M:https://example.blah:8172/MsDeploy.axd?site=example.blah" /U:user /P:p@44w0rd /A:Basic
Другие вопросы по тегам