Я развертываю пакет веб-приложения из командной строки MSBuild в MSDepSvc на IIS6, который отлично работает со следующей командой, использующей обычную аутентификацию:
MSBuild.exe Web.csproj
/p:Configuration=Debug
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=http://[server name]/MsDeployAgentService
/p:DeployIisAppPath=DeploymentTestProject
/p:MSDeployPublishMethod=RemoteAgent
/p:CreatePackageOnPublish=True
/p:username=***
/p:password=***
Однако я действительно хотел бы сбросить параметры имени пользователя и пароля и вернуться к интегрированной аутентификации под именем текущего пользователя. Эта команда собирается на сервере сборки, и я бы предпочел не отображать учетные данные в виде простого текста учетной записи с правами администратора в целевой среде (требуется для MsDepSvc). Я не могу найти какую-либо документацию о том, как это сделать, и сброс учетных данных возвращает 401 неавторизованным, когда я пытаюсь опубликовать.
Что особенно расстраивает, так это то, что я могу с удовольствием запустить команду deploy в пакете с интегрированной аутентификацией (просто не включаю учетные данные), просто не могу запустить ее из командной строки MSBuild. Я пытаюсь инкапсулировать пакет и развернуть процессы в одну команду, не редактируя файлы сборки, и на данный момент это единственное, что мешает.
Есть идеи?
Редактировать
После некоторых обсуждений с Сайедом и более глубокого изучения выходных данных командной строки после выполнения вышеуказанной команды MSBuild (без параметров имени пользователя и пароля) вызывается следующая команда MSDeploy:
msdeploy.exe
-source:package='[project path]\Web\obj\Debug\Package\Web.zip'
-dest:auto,ComputerName='http://[server]/MsDeployAgentService',UserName='***',IncludeAcls='False',AuthType='NTLM'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-retryAttempts=2
Вы видите, что атрибут UserName устанавливается, а значением является имя пользователя текущего вошедшего в систему пользователя. Если я возьму это и выполню вышеприведенную команду напрямую, развертывание пройдет очень хорошо.
Итак, почему же исходная команда MSBuild вставляет атрибут UserName при вызове MSDeploy? Похоже, сейчас это единственный барьер.