Solucionar problemas de Implantação da Web com o Visual Studio
Aplica-se a: Serviços de Informações da Internet
Este artigo ajuda você a solucionar uma série de erros ao tentar publicar do Visual Studio em um servidor que não está configurado corretamente por meio da Implantação da Web. Embora o artigo seja escrito para versões específicas do produto, os conceitos também podem ser aplicados a versões mais recentes.
Para coletar as capturas de tela e os erros a seguir, use um novo projeto MVC ASP.NET no Visual Studio. O servidor de destino era uma instalação limpa do Windows Server com o IIS (Serviços de Informações da Internet). Nenhuma outra configuração foi feita.
Não é possível conectar ao servidor
O primeiro erro que você provavelmente encontrará se parece com a captura de tela a seguir na janela de saída do Visual Studio. Para melhorar a legibilidade, o texto completo da mensagem é fornecido na captura de tela:
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 192.168.0.211:8172
O texto destacado neste erro (e os outros erros nas seções a seguir) é a chave para entender a natureza do problema. A Implantação da Web não recebeu uma resposta do servidor, portanto, o Visual Studio não pode distinguir entre várias causas possíveis. Como resultado, ele fornece uma lista de coisas para experimentar.
O serviço de gerenciamento da Web está instalado?
No servidor IIS, abra o Gerenciador dos Serviços de Informações da Internet (IIS) e selecione o nó do nome do computador. Na visualização Recursos, role para baixo até a seção Gerenciamento e procure estes ícones:
Se eles não estiverem lá, você precisará instalar o Serviço de Gerenciamento por meio da caixa de diálogo Adicionar Serviços de Função. Ele também pode ser instalado por meio do Web Platform Installer na guia Produtos . Selecione Servidor na coluna esquerda e selecione IIS: Serviço de Gerenciamento.
Observação
Depois de instalar o Serviço de Gerenciamento, você precisa iniciá-lo, pois ele não é iniciado automaticamente. Para fazer isso, clique duas vezes no ícone do Serviço de Gerenciamento. Depois que o painel Serviço de Gerenciamento for exibido, selecione Iniciar no painel Ações à direita.
A URL do serviço está correta?
Por padrão, o Serviço de Gerenciamento da Web escuta na porta 8172, mas essa configuração pode ser alterada. A maneira mais fácil de verificar qual porta está sendo usada é abrir o painel Serviço de Gerenciamento, conforme descrito anteriormente, e examinar as informações de IP e porta na seção Conexões. Se a porta tiver sido alterada para algo diferente de 8172, você precisará garantir que a nova porta seja permitida pelo firewall e atualizar a URL de serviço nas configurações de publicação do Visual Studio para usar a nova porta.
(403) Proibido
Depois que o Serviço de Gerenciamento da Web for instalado, o Visual Studio poderá mostrar o seguinte erro:
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.
Esta mensagem é enganosa. Ele afirma que o servidor não respondeu, mas o erro 403 indica que a Implantação da Web pode entrar em contato com o servidor, mas a solicitação foi recusada ativamente. O log HTTP do Serviço de Gerenciamento da Web pode ajudar a confirmar se a solicitação chegou ao servidor e fornecer detalhes sobre a solicitação real que falhou. Esse log pode ser encontrado em %SystemDrive%\Inetpub\logs\WMSvc
por padrão. Como outros logs do IIS, os dados não são gravados no log imediatamente, portanto, talvez seja necessário aguardar alguns minutos para ver a solicitação ou reiniciar o Serviço de Gerenciamento da Web para liberar o log.
WMSVC
No log, você pode ver a seguinte mensagem:
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
O 6
após o 403
no log é o código de sub-status e significa que o endereço IP foi rejeitado. Uma lista completa dos códigos de status e substatus do IIS pode ser encontrada em Códigos de status HTTP no IIS.
O Serviço de Gerenciamento está configurado para permitir conexões remotas?
Esta é a razão mais provável para a resposta 403.6. Clique duas vezes no ícone Serviço de Gerenciamento e verifique se a opção Habilitar Conexões Remotas está marcada. Você deve interromper o serviço para fazer alterações, portanto, reinicie-o quando terminar.
O serviço de gerenciamento da Web foi permitido pelo Firewall do Windows?
Quando você instala o Serviço de Gerenciamento da Web no servidor, uma regra de firewall de entrada é chamada de Serviço de Gerenciamento da Web (HTTP Traffic-In). Verifique se essa regra está habilitada acessando Iniciar>AdministrativeTools>Firewall do Windows com Segurança Avançada. Selecione Regras de entrada e localize a regra de gerenciamento da Web na lista. Ela deve estar habilitada para todos os perfis.
Se você estiver usando um firewall de terceiros, precisará garantir que as conexões de entrada na porta 8172 sejam permitidas.
As restrições de IP foram configuradas para o Serviço de Gerenciamento?
O outro motivo comum pelo qual você pode obter um erro 403 é que o serviço de gerenciamento foi configurado para negar o IP do cliente. Por padrão, ele é configurado para permitir todos os IPs, desde que as conexões remotas sejam permitidas. Você pode verificar as restrições de IP clicando duas vezes no ícone do Serviço de Gerenciamento. Todas as regras de restrição de IP configuradas estão na parte inferior da página em Restrições de endereço IPv4.
(404) Não encontrado
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.
O erro 404 indica que a Implantação da Web conseguiu entrar em contato com o Serviço de Gerenciamento da Web no servidor, mas não conseguiu encontrar o que precisava. A primeira coisa a fazer é confirmar a qual recurso a Implantação da Web tentou se conectar. Se você examinar o log do Serviço de Gerenciamento da Web em %SystemDrive%\Inetpub\logs\WMSvc no servidor de destino, verá uma entrada no WMSVC
log semelhante à seguinte:
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 é o manipulador para solicitações de Implantação da Web.
A Implantação da Web está instalada?
Você pode verificar se a Implantação da Web está instalada acessando o painel de controle Programas e Recursos e procurando Microsoft Web Deploy 4.0 na lista de programas instalados. Se não estiver lá, você pode baixá-lo e instalá-lo na página oficial de download. Você também deve verificar se o Serviço do Agente de Implantação da Web (MsDepSvc) está em execução.
O manipulador de implantação da Web está instalado?
Se a Implantação da Web estiver instalada e você ainda receber esse erro, verifique se o recurso Manipulador de Implantação do IIS na Implantação da Web está instalado. No painel de controle Programas e Recursos, localize o Microsoft Web Deploy 4.0, clique com o botão direito do mouse e selecione Alterar. No Assistente exibido, selecione Avançar na primeira página e, em seguida, selecione Alterar na segunda página. Adicione o Manipulador de Implantação do IIS e tudo abaixo dele.
Selecione Avançar para concluir o assistente. Você precisa reiniciar o serviço de gerenciamento da Web depois de fazer essa alteração.
(401) Não-autorizado
Depois que a Implantação da Web e o Serviço de Gerenciamento da Web estiverem configurados corretamente, você precisará configurar regras de delegação para permitir que os usuários atualizem o conteúdo. Para problemas de permissões, há vários erros diferentes que você pode ver no Visual Studio. Por exemplo:
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.
No log do WMSvc, você pode ver a seguinte mensagem:
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
O status http destacado na saída do Visual Studio é um erro de acesso negado. O status do Win32 realçado no log de erros é mapeado para "Falha de logon: nome de usuário desconhecido ou senha incorreta", portanto, esse erro é uma falha de logon simples. Se o usuário estiver autenticado, mas não tiver os direitos necessários para publicar, a entrada de log será semelhante à seguinte:
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
Para permitir que esse usuário publique, você precisa configurar a delegação de acordo com as instruções em Configurar o Manipulador de Implantação da Web.
Operação não autorizada
Se a conta conseguir fazer login, mas não tiver recebido os direitos necessários para publicar o conteúdo, você verá a seguinte mensagem de erro:
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.
O WMSvc
log mostra respostas HTTP 200 para essas solicitações. Felizmente, a Implantação da Web 2.1 também grava informações no log de serviço de Implantação da Web da Microsoft. Para exibi-lo, selecione Visualizador de Eventos (Local)>Logs>de Aplicativos e Serviços Implantação da Web da Microsoft.
Para esse erro específico, o log de eventos contém detalhes extras (truncados para fins de brevidade):
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 ---
Essa mensagem informa onde as permissões precisam ser concedidas para esse erro específico. Você também pode ver o seguinte erro de permissões no 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.
Esse erro específico não oferece muito o que fazer, mas a imagem fica mais clara se você observar o log de erros de Implantação da Web no Visualizador de Eventos.
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)
A partir dessa saída, podemos ver que User1
não tem os direitos para definir informações de segurança. Nesse caso, o usuário não tem "permissões de modificação" no conteúdo. Conceder "Permissões de alteração" ao conteúdo resolve o problema.
Others
Se você não conseguir navegar em um aplicativo .NET 4.0 depois de publicá-lo com êxito, pode ser que o .NET 4.0 não esteja registrado corretamente no IIS. Outros sintomas são que o .NET 4.0 está instalado, mas não há pools de aplicativos do .NET 4.0 ou mapeamentos de manipulador no IIS. Esse sintoma ocorre quando o .NET 4.0 é instalado antes da instalação do IIS. Para corrigir esse problema, inicie um prompt de comando elevado e execute o seguinte comando:
%systemdrive%\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -iru