После большого количества проб и ошибок, я в настоящее время могу написать скрипт msdeploy.exe для развертывания пакета, встроенного в Visual Studio 2010, на удаленный сервер с IIS 7.5 с помощью командной строки, например:
Команда базовой аутентификации:
msdeploy -source:package="project.zip" -dest:auto,computerName='https://webserver:8172/MsDeploy.axd',authtype='Basic',username='DOMAIN\myuser',password='xxx',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted
Могу ли я исключить необходимость ввода пароля в командной строке, включив сквозную аутентификацию? В документах Web Deploy упоминается параметр authType, который может указывать «NTLM» вместо Basic. Однако всякий раз, когда я пытаюсь это сделать (см. Пример ниже), я получаю сообщение об ошибке, указывающее 401. В веб-журнале WMSvc отображается 401.2, и в этой записи журнала не заполняется идентификатор пользователя, в отличие от предыдущих попыток использования обычной аутентификации, в действительности отображается DOMAIN \ myuser в веб-журнале. Никакой другой полезной информации не найдено в средстве просмотра событий ни клиента, ни сервера.
Примечание. Целевой веб-сервер находится в другом домене, поэтому я создаю net use \\webserver /u:DOMAIN\myuser
токен.
Попытка команды сквозной аутентификации:
msdeploy -source:package="project.zip" -dest:auto,computerName='https://webserver:8172/MsDeploy.axd',authtype='NTLM',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted
Похоже, msdeploy.exe не проходит надлежащую проверку подлинности с помощью IIS на уровне HTTP. Что может быть не так?
Клиент - Windows XP, Сервер - Win2008R2. Оба работают под управлением msdeploy.exe версии 7.1.618.0. На обоих установлены .NET 2.0, 3.5 и 4.0.