Web Deploy 3.0 приводила в бешенство 401 ошибка при публикации
Кажется, я не могу получить простое приложение для развертывания на сервере IIS, администратором которого я являюсь. Вот сообщение об ошибке, которое я получаю от VS2010 (имя домена изменено для защиты невинных):
------ Build started: Project: HelloWorldWeb, Configuration: Debug Any CPU ------
HelloWorldWeb -> D:\$Data\mhtest\HelloWorldWeb\bin\HelloWorldWeb.dll
------ Publish started: Project: HelloWorldWeb, Configuration: Debug Any CPU ------
Transformed Web.config using Web.Debug.config into obj\Debug\TransformWebConfig\transformed\Web.config.
Auto ConnectionString Transformed Account\Web.config into obj\Debug\CSAutoParameterize\transformed\Account\Web.config.
Auto ConnectionString Transformed obj\Debug\TransformWebConfig\transformed\Web.config into obj\Debug\CSAutoParameterize\transformed\Web.config.
Copying all files to temporary location below for package/publish:
obj\Debug\Package\PackageTmp.
Start Web Deploy Publish the Application/package to http://www.myserver.com/MSDEPLOYAGENTSERVICE ...
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(3847,5): Error : Web deployment task failed.(Remote agent (URL http://www.myserver.com/MSDEPLOYAGENTSERVICE) could not be contacted. Make sure the remote agent service is installed and started on the target computer.)
Make sure the site name, user name, and password are correct. If the issue is not resolved, please contact your local or server administrator.
Error details:
Remote agent (URL http://www.myserver.com/MSDEPLOYAGENTSERVICE) could not be contacted. Make sure the remote agent service is installed and started on the target computer.
An unsupported response was received. The response header 'MSDeploy.Response' was 'V1' but 'v1' was expected.
The remote server returned an error: (401) Unauthorized.
Publish failed to deploy.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========
Пока что у меня есть:
- Установленный Web Deploy 3.0 на сервере IIS
- Установленная служба веб-управления, хотя я не думаю, что я пытаюсь использовать это, я хочу сделать все это через порт 80 в настоящее время (в отличие от 8172).
- Гарантировано, что служба MsDepSvc работает как пользователь, являющийся членом Администраторов.
- Гарантировал, что учетные данные, которые я использую в VS2010 во время развертывания, является пользователем, который является членом Администраторов
- Убедитесь, что сайт и приложение, которое я ввел, совпадают с тем, что уже существует на сервере IIS
Другие детали:
- Сервер IIS удален, находится за брандмауэром, а не в домене моей рабочей станции. Я предполагаю, что должен делать это, используя Basic Auth, хотя я не могу найти способ указать это, если это уже не значение по умолчанию.
- Если я открою браузер и перейду по http://www.myserver.com/MSDEPLOYAGENTSERVICE, то наверняка мне предложат ввести учетные данные. Если я ввожу действительные учетные данные администратора, я получаю пустой экран - трассировка сети показывает, что сервер ответил 401.
1 ответ
Мне удалось заставить его работать. Я вернулся к документу по устранению неполадок: http://www.iis.net/learn/publish/troubleshooting-web-deploy/troubleshooting-common-problems-with-web-deploy
Приблизительно на одной трети пути он ссылается на 401 ошибку, я прочитал это более внимательно:
Попытка получить доступ к службе удаленного агента как не администратор
СИМПТОМЫ
Microsoft.Web.Deployment.DeploymentException:
Could not complete the request to remote agent URL 'http://DestinationServer/msdeployAgentService'. ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized.
ПЕРВОПРИЧИНА
Служба удаленного агента требует, чтобы вызывающий абонент был членом группы администраторов или учетной записи домена, добавленной в группу администраторов. Локальный администратор, который не является встроенной учетной записью, не будет работать со службой удаленного агента из-за ошибки в Web Deploy 2.0.
FIX / Временное решение
Предоставьте административные полномочия
Поэтому мне не нужно было использовать "учетную запись администратора", мне нужно было использовать "учетную запись администратора". Я мог бы заметить это в первый раз, если бы в нем не использовался запутанный двойной отрицательный знак, и было ясно, что ошибка существует и в текущей версии, то есть 3.0 на момент написания.