Solución de problemas de Web Deploy con Visual Studio
Se aplica a: Internet Information Services
Este artículo le ayuda a solucionar una serie de errores al intentar publicar desde Visual Studio en un servidor que no está configurado correctamente a través de Web Deploy. Aunque el artículo está escrito para versiones de producto específicas, también se podrían aplicar los conceptos a las versiones más recientes.
Para recopilar las capturas de pantalla y los errores siguientes, use un nuevo proyecto de ASP.NET MVC en Visual Studio. El servidor de destino era una instalación limpia de Windows Server con Internet Information Services (IIS). No se realizó ninguna otra configuración.
No se puede conectar al servidor
El primer error que probablemente encuentre se parece a la siguiente captura de pantalla en la ventana de salida de Visual Studio. Para mejorar la legibilidad, se proporciona el texto completo del mensaje en la captura de pantalla:
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
El texto resaltado en este error (y los otros errores de las secciones siguientes) es la clave para comprender la naturaleza del problema. Web Deploy no ha encontrado una respuesta del servidor, por lo que Visual Studio no puede distinguir entre varias causas posibles. Como resultado, proporciona una lista de cosas que probar.
¿Está instalado el servicio de administración web?
En el servidor IIS, abra administrador de Internet Information Services (IIS) y seleccione el nodo nombre de equipo. En la vista Características , desplácese hacia abajo hasta la sección Administración y busque estos iconos:
Si no están allí, debe instalar el servicio de administración a través del cuadro de diálogo Agregar servicios de rol. También se puede instalar a través del Instalador de plataforma web en la pestaña Productos . Seleccione Servidor en la columna izquierda y seleccione IIS: Servicio de administración.
Nota:
Después de instalar el servicio de administración, debe iniciarlo, ya que no se inicia automáticamente. Para ello, haga doble clic en el icono Servicio de administración. Una vez que se muestre el panel Servicio de administración, seleccione Iniciar en el panel Acciones de la derecha.
¿La dirección URL del servicio es correcta?
De forma predeterminada, el servicio de administración web escucha en el puerto 8172, pero esta configuración se puede cambiar. La manera más fácil de comprobar qué puerto se usa es abrir el panel Servicio de administración como se describió anteriormente y examinar la información de ip y puerto en la sección Conexiones. Si el puerto se ha cambiado a algo distinto de 8172, debe asegurarse de que el puerto nuevo se permite a través del firewall y actualizar la dirección URL del servicio en la configuración de publicación de Visual Studio para usar el nuevo puerto.
(403) Prohibido
Una vez instalado el servicio de administración web, Visual Studio puede mostrar el siguiente error:
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.
Este mensaje es engañoso. Indica que el servidor no respondió, pero el error 403 indica que Web Deploy podría ponerse en contacto con el servidor, pero la solicitud se rechazó activamente. El registro HTTP del servicio de administración web puede ayudar a confirmar la solicitud alcanzada al servidor y proporcionar detalles sobre la solicitud real que produjo un error. Este registro se puede encontrar de forma predeterminada en %SystemDrive%\Inetpub\logs\WMSvc
. Al igual que otros registros de IIS, los datos no se escriben en el registro inmediatamente, por lo que es posible que tenga que esperar un par de minutos para ver la solicitud o reiniciar el servicio de administración web para vaciar el registro.
En el WMSVC
registro, puede ver el mensaje siguiente:
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
6
Después de que en 403
el registro sea el código de subestado, significa que se rechazó la dirección IP. Puede encontrar una lista completa de los códigos de estado y subestado para IIS en códigos de estado HTTP en IIS.
¿Está configurado el servicio de administración para permitir conexiones remotas?
Esta es la razón más probable para la respuesta 403.6. Haga doble clic en el icono Servicio de administración y compruebe que habilitar conexiones remotas está activada. Debe detener el servicio para realizar cambios, así que asegúrese de reiniciarlo cuando haya terminado.
¿Se ha permitido el servicio de administración web a través del Firewall de Windows?
Al instalar el servicio de administración web en el servidor, una regla de firewall de entrada se denomina Servicio de administración web (tráfico HTTP). Compruebe que esta regla está habilitada; para ello, vaya a Iniciar>AdministradorHerramientas>de Windows Firewall con Seguridad avanzada. Seleccione Reglas de entrada y busque la regla de administración web en la lista. Debe habilitarse para todos los perfiles.
Si usa un firewall de terceros, debe asegurarse de que se permiten las conexiones entrantes en el puerto 8172.
¿Se han configurado restricciones de IP para el servicio de administración?
La otra razón común por la que podría obtener un error 403 es que el servicio de administración se ha configurado para denegar la dirección IP del cliente. De forma predeterminada, está configurado para permitir todas las direcciones IP siempre que se permitan conexiones remotas. Para comprobar las restricciones de IP, haga doble clic en el icono Servicio de administración. Las reglas de restricción de IP configuradas se encuentran en la parte inferior de la página de restricciones de direcciones IPv4.
(404) No 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.
El error 404 indica que Web Deploy pudo ponerse en contacto con el servicio de administración web en el servidor, pero no pudo encontrar lo que necesitaba. Lo primero que debe hacer es confirmar a qué recurso Web Deploy intentó conectarse. Si observa el registro del servicio de administración web en %SystemDrive%\Inetpub\logs\WMSvc en el servidor de destino, verá una entrada en el registro similar a WMSVC
la siguiente:
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 es el controlador de las solicitudes de Web Deploy.
¿Está instalado Web Deploy?
Para comprobar que Web Deploy está instalado, vaya al panel de control Programas y características y busque Microsoft Web Deploy 4.0 en la lista de programas instalados. Si no está allí, puede descargarlo e instalarlo desde la página de descarga oficial. También debe asegurarse de que se está ejecutando el Servicio Agente de implementación web (MsDepSvc).
¿Está instalado el controlador de implementación web?
Si Web Deploy está instalado y sigue recibiendo este error, asegúrese de que la característica Controlador de implementación de IIS en Web Deploy está instalada. En el panel de control Programas y características , busque Microsoft Web Deploy 4.0, haga clic con el botón derecho en él y seleccione Cambiar. En el Asistente que aparece, seleccione Siguiente en la primera página y, a continuación, seleccione Cambiar en la segunda página. Agregue el controlador de implementación de IIS y todo en él.
Seleccione Siguiente para completar el Asistente. Debe reiniciar el servicio de administración web después de realizar este cambio.
(401) No autorizado
Una vez que Web Deploy y el servicio de administración web están configurados correctamente, debe configurar reglas de delegación para permitir que los usuarios actualicen el contenido. En el caso de los problemas de permisos, hay varios errores diferentes que puede ver en Visual Studio. Por ejemplo:
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.
En el registro de WMSvc, puede ver el siguiente mensaje:
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
El estado HTTP resaltado en la salida de Visual Studio es un error de acceso denegado. El estado de Win32 resaltado en el registro de errores se asigna a "Error de inicio de sesión: nombre de usuario desconocido o contraseña incorrecta", por lo que este error es un error de inicio de sesión simple. Si el usuario está autenticado pero no tiene los derechos necesarios para publicar, la entrada de registro es similar a la siguiente:
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 este usuario publique, debe configurar la delegación según las instrucciones de Configuración del controlador de implementación web.
Operación no autorizada
Si la cuenta puede iniciar sesión pero no se le han concedido los derechos necesarios para publicar el contenido, verá el siguiente mensaje de error:
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.
El WMSvc
registro muestra las respuestas HTTP 200 para estas solicitudes. Afortunadamente, Web Deploy 2.1 también escribe información en el registro del servicio Microsoft Web Deploy. Para verlo, seleccione Visor de eventos (local)>Registros de servicios>y aplicaciones de Microsoft Web Deploy.
Para este error concreto, el registro de eventos contiene detalles adicionales (truncados para mayor brevedad):
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 ---
Este mensaje indica dónde deben concederse permisos para este error en concreto. También puede ver el siguiente error de permisos en 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.
Este error en particular no le da mucho para continuar, pero la imagen se vuelve más clara si observa el registro de errores de Web Deploy en el Visor 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 de esta salida, podemos ver que User1
no tiene derechos para establecer la información de seguridad. En este caso, el usuario no tiene "Modificar permisos" en el contenido. Conceder "Cambiar permisos" al contenido resuelve el problema.
Otros
Si no puede examinar una aplicación de .NET 4.0 después de publicarla correctamente, podría ser que .NET 4.0 no se haya registrado correctamente con IIS. Otros síntomas son que .NET 4.0 está instalado, pero no hay grupos de aplicaciones de .NET 4.0 ni asignaciones de controladores en IIS. Este síntoma se produce cuando se instala .NET 4.0 antes de instalar IIS. Para corregir este problema, inicie un símbolo del sistema con privilegios elevados y ejecute el siguiente comando:
%systemdrive%\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -iru