Web Deploy возвращает 401 несанкционированных при публикации через [proj] .deploy.cmd - PullRequest
13 голосов
/ 15 ноября 2010

У меня небольшая проблема с Web Deploy, которую я просто не могу решить. Каждый раз, когда я пытаюсь опубликовать в WMSvc с помощью команды [proj] .deploy.cmd в пакете, я получаю «Удаленный сервер возвратил ошибку: (401) Unauthorized». Команда выглядит следующим образом (проект называется «Web», сервер называется «AutoDeploy»):

Web.deploy.cmd /Y /M:https://AutoDeploy:8172/MsDeploy.axd -allowUntrusted

Я могу опубликовать в порядке https://AutoDeploy:8172/MsDeploy.axd через Visual Studio, так что служба определенно работает, и я могу успешно пройти проверку подлинности в качестве администратора. Локальный запуск на компьютере с пакетом при входе в систему с правами администратора (это просто небольшой локальный Win 2k8 VPC) не работает, а добавление параметров / U и / P с учетной записью администратора ничего не дает.

У меня включено отслеживание неудачных запросов , и я получаю эти выходные данные , так что, по крайней мере, есть на что ссылаться, но, к сожалению, я не могу определить причину. Я пытаюсь подключиться к тому же сервису с теми же учетными данными, что и в Visual Studio, но, очевидно, что-то другое.

Просто ради интереса я могу опубликовать штраф в службу агента веб-развертывания (MsDepSvc) следующим образом:

Web.deploy.cmd /Y /M:http://AutoDeploy/MsDeployAgentService /U:AutoDeploy\Administrator /P:...

Но я действительно хочу запустить WMSvc! Есть мысли?

1 Ответ

11 голосов
/ 17 ноября 2010

Комментарий Саида выше указал мне правильное направление.Сделав подробный вывод о сборке «Подробно», а также установив для UseMsdeployExe значение true в .csproj (еще один совет из блога Сайеда ), я обнаружил, что команда, сгенерированная Visual Studio, устанавливает тип аутентификации на базовый, который ретроспективно, очевидно с учетом имени пользователя и пароля в виде простого текста.

Сообщение MSDN на Как: установить пакет развертывания с помощью файла deploy.cmd объясняет, что вы можете просто добавить флаг "a"на команду, чтобы установить это.Короче говоря, вот как это выглядит (и действительно работает):

Web.deploy.cmd /Y /M:http://AutoDeploy/MsDeployAgentService /U:AutoDeploy\Administrator /P:...  /A:Basic
...