2012-03-28 12 views
15

Tengo un paso de compilación que forma parte de mi configuración de implementación. Mi compañero de trabajo me dijo que había trabajado una vez en una luna azulCompilación fallida: aspnet_client system_web 4_0_30319

seguí recibiendo este error constantemente cuando me encontré con este paso de construcción:

Deleting dirPath (qa.comedy.net\aspnet_client\system_web\4_0_30319). [15:22:22]: 

[VSMSDeploy] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.\We 
\Microsoft.Web.Publishing.targets(3588, 5): Web deployment task failed.((3/28/2012 3:22:22 PM) An error occurred when the request was processed on the remote computer.) 

Attempt to perform an unauthorized operation on file '4_0_30319'. 

Parece que se está tratando de eliminar la carpeta aspnet_client \ system_web \ 4_0_30319, pero no tiene permiso para.

ejecutamos esta compilación en una máquina virtual.

¿Alguna sugerencia sobre cómo resolver esto?

Toda ayuda es muy apreciada.

Gracias

Respuesta

13

que tenían este problema como el despliegue de sitio con MSDeploy y TeamCity. Resolví que deleteing estas carpetas de mi página web aspnet_client\system_web\4_0_30319

+0

Yo tenía el mismo problema cuando se utiliza de publicación FTP. Justo después de la etapa de eliminación, la estructura de carpetas anterior se creó en el servidor remoto. No tengo ni idea de porqué. Nunca ha hecho esto antes. Simplemente eliminé la carpeta anterior dejando la raíz intacta y luego intenté publicar de nuevo y funcionó. –

+0

Eso funciona bien, pero tendrá que seguir haciéndolo ya que las actualizaciones automáticas volverán a agregar la carpeta repetidamente. Consulte mi respuesta para encontrar algunas soluciones permanentes. – MemeDeveloper

+0

¿Esta estructura de carpetas es algo que Web Deploy elimina si realiza una ejecución de prueba "whatif"? –

0

no estaba usando TeamCity pero yo creo También tuve este problema . Estaba intentando implementar en Discount ASP.NET usando VS2010 WebDeploy. Después de leer lo que doglin y Dan publicaron, descubrí que podía solucionar este problema marcando la casilla "Dejar archivos extra en el destino (no eliminar)". Esa puede no ser una opción para todos, pero funcionó para mí.

0

Me enfrenté al mismo problema durante WebDeploy en TeamCity. Termino elevando los privilegios para la cuenta de WebDeploy bajo la cual hago la tarea de WebDeploy. Por lo tanto, la cuenta tiene suficiente poder para eliminar esas carpetas (función de administrador local).

9

Sí, puede eliminar esta carpeta y la próxima implementación funcionará, pero con la próxima actualización de Windows que ejecuta la herramienta de registro asp.net como parte de su instalación, esta carpeta volverá a todos los sitios asp.net en IIS (con los permisos incorrectos), por lo que su implementación fallará nuevamente. Esto se puede evitar mediante

  • dando al usuario desplegar privilegios elevados (no es una gran solución para razones obvias)
  • Añadir la estructura de carpetas a su SC por lo que recibe desplegados en lugar del despliegue tratando de eliminarla (no es ideal, pero más fáciles)
  • de parada automática de las ventanas de una actualización (no sensible)
  • Usted puede ser capaz de hacer algo como esto http://blog.richardszalay.com/2012/12/18/demystifying-msdeploy-skip-rules/ hacer caso omiso de la carpeta en la implementación (no he intentado esto)
+1

Me he encontrado con esto un par de veces, y terminé haciendo su segunda sugerencia: después de eliminar la carpeta manualmente, agrego un 'aspnet_client \ system_web_4_0_30319 \ placeholder.txt' a SC para que se cree la carpeta. De hecho, me acabo de vincular a este artículo en el archivo de texto. Estoy de acuerdo en que no es ideal, pero tampoco lo es alguna herramienta ASP que ejecute automáticamente y agregue archivos aleatorios a una aplicación desplegada. – gregmac

+0

@gregmac De hecho veo la adición de esta carpeta por las actualizaciones como un error. No debería estar sucediendo. – MemeDeveloper

2

Como MemeDeveloper mentions in their answer, una manera de solucionar este problema es simplemente ignorar ese directorio. De hecho, esta es la solución más fácil y no requiere agregar nada a su repositorio de control de origen ni a su resultado de compilación. Simplemente agregue lo siguiente a su msdeploy.exe comando:

-skip:Directory="aspnet_client"

+0

Gracias, esta solución funcionó bastante bien para mí :-) –

+0

¡Hola! ¿Dónde haces este cambio? – Patrick

+0

@Patrick Dondequiera que se almacene su comando de implementación, p. una aplicación de compilación, una aplicación de CI; lo que está ejecutando el comando 'msdeploy'. –

Cuestiones relacionadas