Устранение неполадок веб-развертывания с помощью Visual Studio

Применимо к: Службы IIS

Эта статья поможет устранить ряд ошибок при попытке публикации из Visual Studio на сервере, который не был правильно настроен с помощью веб-развертывания. Хотя эта статья написана для конкретных версий продукта, эти понятия также могут применяться и к более новым версиям.

Чтобы собрать следующие снимки экрана и ошибки, используйте новый проект MVC 3 ASP.Net в Visual Studio 2010 с пакетом обновления 1 (SP1). Конечный сервер был чистой установкой Windows Server 2008 R2 с пакетом обновления 1 (SP1) со службами IIS. Другая настройка не была выполнена.

Не удается подключиться к серверу

Первая ошибка, которую вы можете столкнуться, будет выглядеть так, как показано на следующем снимке экрана в окне выходных данных Visual Studio. Для повышения удобочитаемости полный текст сообщения приведен под снимка экрана:

Снимок экрана: выходные данные списка ошибок в Visual Studio.

Web deployment task failed.(Could not connect to the destination computer ("deployserver").On the destination computer, make sure that Web Deploy is installed and that the required process("The Web Management Service") is started.)
This error indicates that you cannot connect to the server. Make sure the service URL is correct,firewall and network settings on this computer and on the server computer are configured properly,and the appropriate services have been started on the server.
Error details:
Could not connect to the destination computer ("deployserver"). On the destination computer,
make sure that Web Deploy is installed and that the required process
("The Web Management Service") is started.
Unable to connect to the remote server
A connection attempt failed because the connected party did not properly respond after a period
of time, or established connection failed because connected host has failed to respond 1.1.1.1:8172

Текст, выделенный в этой ошибке (и другие ошибки ниже), является ключом к пониманию природы проблемы. Веб-развертывание не получили ответ от сервера, поэтому Visual Studio не может различать несколько возможных причин. В результате он дает список вещей, которые следует попробовать.

Установлена ли служба управления веб-сайтом?

На сервере IIS откройте диспетчер служб IIS и выберите узел имени компьютера. В представлении Компоненты прокрутите вниз до раздела Управление и найдите следующие значки:

Снимок экрана: значок

Если их нет, необходимо установить службу управления с помощью диалогового окна Добавление служб ролей . Его также можно установить с помощью установщика веб-платформы на вкладке Продукты . Выберите Сервер в левом столбце и выберите IIS: Служба управления.

Примечание.

После установки службы управления ее необходимо запустить, так как она не запускается автоматически. Для этого дважды щелкните значок Службы управления . После отображения области Служба управления нажмите кнопку Пуск в области Действия справа.

Правильный ли URL-адрес службы?

По умолчанию служба веб-управления прослушивает порт 8172, но это можно изменить. Самый простой способ проверка, какой порт используется, — открыть панель Службы управления, как описано выше, и просмотреть сведения об IP-адресе и портах в разделе Connections. Если порт был изменен на нечто, отличное от 8172, необходимо убедиться, что новый порт разрешен через брандмауэр, и обновить URL-адрес службы в параметрах публикации Visual Studio, чтобы использовать новый порт.

(403) Запрещено

После установки веб-службы управления Visual Studio может отобразить следующую ошибку:

Снимок экрана: экран

Web deployment task failed.(Could not connect to the destination computer ("deployserver") using
the specified process ("The Web Management Service") because the server did not respond.
Make sure that the process ("The Web Management Service") is started on the destination computer.)
Could not connect to the destination computer ("deployserver") using the specified process
("The Web Management Service") because the server did not respond. Make sure that the process
("The Web Management Service") is started on the destination computer.
The remote server returned an error: (403) Forbidden.

Это сообщение несколько вводит в заблуждение. В нем указано, что сервер не ответил, но ошибка 403 указывает на то, что веб-развертывание может связаться с сервером, но запрос был отклонен. Журнал HTTP для службы веб-управления может помочь подтвердить, что запрос достиг сервера и предоставить сведения о фактическом запросе, который завершился сбоем. Этот журнал можно найти по %SystemDrive%\Inetpub\logs\WMSvc умолчанию. Как и другие журналы IIS, данные записываются в журнал не сразу, поэтому вам может потребоваться подождать пару минут, чтобы увидеть запрос, или перезапустить службу веб-управления, чтобы очистить журнал.

В журнале WMSVC указанная выше ошибка выглядит следующим образом:

2011-06-02 17:59:05 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 403 6 5 1669

403 После 6 в журнале отображается код подчиненного состояния и означает, что IP-адрес был отклонен. Полный список кодов состояния и вложенных состояний для IIS можно найти на странице Коды состояния HTTP в IIS.

Настроена ли служба управления для разрешения удаленных подключений?

Это наиболее вероятная причина ответа 403.6. Дважды щелкните значок Службы управления и убедитесь, что установлен флажок Включить удаленный Connections. Чтобы внести изменения, необходимо остановить службу, поэтому не забудьте перезапустить ее после завершения.

Снимок экрана: диалоговое окно

Разрешена ли служба веб-управления через брандмауэр Windows?

При установке службы веб-управления на сервере правило брандмауэра для входящего трафика называется Веб-служба управления (HTTP Traffic-In). Убедитесь, что это правило включено, выбрав Запуск>административных> инструментовБрандмауэр Windows в режиме повышенной безопасности. Выберите Правила для входящего трафика и найдите правило веб-управления в списке. Он должен быть включен для всех профилей.

Если вы используете сторонний брандмауэр, необходимо убедиться, что разрешены входящие подключения через порт 8172.

Настроены ли ограничения IP-адресов для службы управления?

Другая распространенная причина, по которой можно получить ошибку 403, заключается в том, что служба управления настроена на отказ в IP-адресе клиента. По умолчанию настроено разрешение всех IP-адресов при условии, что разрешены удаленные подключения. Вы можете проверка ограничения IP-адресов, дважды щелкнув значок Службы управления. Все настроенные правила ограничения IP-адресов находятся в нижней части страницы ограничения IPv4-адресов.

(404) Не найдено

Снимок экрана: страница

Web deployment task failed.(Could not connect to the destination computer ("deployserver").
On the destination computer, make sure that Web Deploy is installed and that the required process
("The Web Management Service") is started.
The requested resource does not exist, or the requested URL is incorrect.
Error details: Could not connect to the destination computer ("deployserver").
On the destination computer, make sure that Web Deploy is installed and that the required process
("The Web Management Service") is started.
The remote server returned an error: (404) Not Found.

Ошибка 404 указывает, что веб-развертыванию удалось связаться со службой веб-управления на сервере, но не удалось найти необходимые данные. Первое, что нужно сделать, — это подтвердить, к какому ресурсу веб-развертывание попыталось подключиться. Если вы посмотрите в журнал службы веб-управления в разделе %SystemDrive%\Inetpub\logs\WMSvc на целевом сервере, в WMSVC журнале появится запись, которая выглядит следующим образом:

2011-05-12 15:21:50 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 404 7 0 1606

Msdeploy.axd — это обработчик запросов веб-развертывания.

Установлено ли веб-развертывание?

Чтобы убедиться, что веб-развертывание установлено, перейдите на панель управления Программы и компоненты и найдите Microsoft Web Deploy 2.0 в списке установленных программ. Если его нет, его можно установить с помощью установщика веб-платформы, перейдя на вкладку Продукты . Он указан как средство веб-развертывания 2.1. Кроме того, убедитесь, что служба веб-Deployment Agent (MsDepSvc) запущена.

Установлен ли обработчик веб-развертывания?

Если веб-развертывание установлено и вы по-прежнему получаете эту ошибку, убедитесь, что компонент обработчик развертывания IIS 7 в веб-развертывании установлен. На панели управления Программы и компоненты найдите Microsoft Web Deploy 2.0, щелкните правой кнопкой мыши и выберите изменить. В появившемся мастере нажмите кнопку Далее на первой странице, а затем выберите Изменить на второй. Добавьте обработчик развертывания IIS 7 и все, что под ним.

Снимок экрана: диалоговое окно установки Microsoft Web Deploy 2 до точки 0. платформа веб-развертывания выделен.

Нажмите кнопку Далее , чтобы завершить работу мастера. После внесения этого изменения необходимо перезапустить службу веб-управления.

(401) Не авторизовано

После правильной настройки веб-развертывания и службы веб-управления необходимо настроить правила делегирования, позволяющие пользователям обновлять содержимое. При проблемах с разрешениями в Visual Studio может возникнуть несколько различных ошибок. Например:

Снимок экрана: список ошибок в Visual Studio, отображающий ошибки проблемы с разрешениями.

Web deployment task failed.(Connected to the destination computer ("deployserver")
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.
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:
Connected to the destination computer ("deployserver") 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.
The remote server returned an error: (401) Unauthorized.

В журнале WMSvc отображается следующее сообщение:

2011-05-12 15:50:12 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 401 2 5 1653
2011-05-12 15:50:12 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 user1 192.168.0.203 - 401 1 1326 124

Выделенное состояние HTTP в выходных данных Visual Studio является ошибкой "Отказано в доступе". Выделенное состояние win32 в журнале ошибок сопоставляется с "Сбой входа: неизвестное имя пользователя или неправильный пароль", поэтому это простой сбой входа. Если пользователь прошел проверку подлинности, но у него нет прав, необходимых для публикации, запись журнала выглядит следующим образом:

2011-05-12 15:55:38 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 401 2 5 0

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

Операция не авторизована

Если учетная запись может войти в систему, но ей не предоставлены права, необходимые для публикации содержимого, отображается следующее сообщение об ошибке:

Снимок экрана: страница

Web deployment task failed. (Unable to perform the operation ("Create Directory")  for the specified
directory ("bin"). This can occur if the server administrator has not authorized this operation for
the user credentials you are using.

В журнале WMSvc отображаются ответы HTTP 200 для этих запросов. К счастью, веб-развертывание 2.1 также записывает сведения в журнал службы Microsoft Web Deploy. Чтобы просмотреть его, выберите Просмотр событий (локальные)>Приложения и службы Журналы>Microsoft Web Deploy.

Снимок экрана: меню Просмотр событий. Выделено Microsoft Web Deploy.

Для этой конкретной ошибки журнал событий содержит дополнительные сведения (усеченные для краткости):

User: DEPLOYSERVER\User1
Client IP: 192.168.0.203
Content-Type: application/msdeploy
Version: 8.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 7.1.1070.1
MSDeploy.Method: Sync
MSDeploy.RequestId: 50de0746-f10d-4640-9b3d-4ba773520e38
MSDeploy.RequestCulture: en-US
MSDeploy.RequestUICulture: en-US
Skip: objectName="^configProtectedData$"
Provider: auto, Path: 
Tracing deployment agent exception. Request ID '50de0746-f10d-4640-9b3d-4ba773520e38'. Request Timestamp: '5/12/2011 9:18:12 AM'. Error Details:
Microsoft.Web.Deployment.DeploymentDetailedUnauthorizedAccessException: Unable to perform the operation ("Create Directory")
for the specified directory ("C:\inetpub\wwwroot\bin"). This can occur if the server administrator has not authorized this
operation for the user credentials you are using.
---> Microsoft.Web.Deployment.DeploymentException: The error code was 0x80070005. ---> System.UnauthorizedAccessException:
Access to the path 'C:\inetpub\wwwroot\bin' is denied.
   at Microsoft.Web.Deployment.Win32Native.RaiseIOExceptionFromErrorCode(Win32ErrorCode errorCode, String maybeFullPath)
   at Microsoft.Web.Deployment.DirectoryEx.CreateDirectory(String path)
   at Microsoft.Web.Deployment.DirPathProvider.CreateDirectory(String fullPath, DeploymentObject source)
   at Microsoft.Web.Deployment.DirPathProvider.Add(DeploymentObject source, Boolean whatIf)
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---

В этом сообщении сообщается, где необходимо предоставить разрешения для этой конкретной ошибки. Вы также можете увидеть следующую ошибку разрешений в Visual Studio:

Снимок экрана: страница

Web deployment task failed.((5/12/2011 11:31:41 AM) An error occurred when the request was processed on the remote computer.)

(5/12/2011 11:31:41 AM) An error occurred when the request was processed on the remote computer.
The server experienced an issue processing the request. Contact the server administrator for more information.

Эта конкретная ошибка не дает вам много действий, но картина становится яснее, если вы посмотрите на журнал ошибок веб-развертывания в Просмотр событий.

User: DEPLOYSERVER\User1
Client IP: 192.168.0.203
Content-Type: application/msdeploy
Version: 8.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 7.1.1070.1
MSDeploy.Method: Sync
MSDeploy.RequestId: 63b2f3d1-1817-444f-8280-9fa4f6f85d53
MSDeploy.RequestCulture: en-US
MSDeploy.RequestUICulture: en-US
Skip: objectName="^configProtectedData$"
Provider: auto, Path: 
Tracing deployment agent exception. Request ID '63b2f3d1-1817-444f-8280-9fa4f6f85d53'. Request Timestamp: '5/12/2011 9:31:41 AM'. Error Details:
System.UnauthorizedAccessException: Attempted to perform an unauthorized operation.
   at System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl)
   at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext)
   at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections, Object exceptionContext)
   at Microsoft.Web.Deployment.FileSystemSecurityEx.Persist(String path)
   at Microsoft.Web.Deployment.SetAclProvider.Add(DeploymentObject source, Boolean whatIf)
   at Microsoft.Web.Deployment.DeploymentObject.Update(DeploymentObject source, DeploymentSyncContext syncContext)
   at Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)

Из этих выходных данных видно, что User1 у него нет прав на настройку сведений о безопасности. В этом случае у пользователя нет разрешений на изменение содержимого. Если разрешить содержимому "Изменить разрешения", проблема устранена.

Другие

Если вы не можете просмотреть приложение .NET 4.0 после его успешной публикации, возможно, .NET 4.0 неправильно зарегистрировано в IIS. Другие симптомы связаны с установкой .NET 4.0, но в СЛУЖБАх IIS отсутствуют пулы приложений или сопоставления обработчиков .NET 4.0. Это происходит, когда .NET 4.0 устанавливается до установки СЛУЖБ IIS. Чтобы устранить эту проблему, запустите командную строку с повышенными привилегиями и выполните следующую команду:

%systemdrive%\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -iru

Дополнительная информация