No hagas un deploy de lo que no tengas que hacer un deploy

Hoy nos hemos encontrado con uno de esos poltergeist que tan locos nos vuelven de tanto en cuanto.

Resulta que estábamos haciendo un despliegue de una aplicación MVC en un entorno de pruebas. Es una aplicación sencillita con autenticación windows y una autorización personalizada como explicábamos en el anterior artículo. Lo primero que nos hemos encontrado es que al acceder a la aplicación nos daba un error 403. Esto es debido a que el AppPool con el que estaba configurada la aplicación en el IIS tenia el Pipeline Mode a Classic. Este modo evita que podamos acceder a direcciones sin extensión, aunque hay workarounds que solventan el problema.

Pero todavía no sabíamos que teníamos este problema, así que una de las (erróneas) creencias que hemos tenido ha sido pensar que nuestro IIS tenia algún problema con el MVC. Pensando esto, hemos querido desplegar las dlls necesarias con nuestra aplicación, así que nos hemos ido a nuestro querido Visual Studio, hemos hecho clic con el botón derecho sobre la solución y hemos seleccionado la opción “add deployable dependencies”

adddeploymentdependencies2

Esto, después de pedirnos que dependencias queríamos añadir…

adddeploymentdependenciesStep2

…nos ha creado un directorio en la solución con las dependencias necesarias

bin_deployableAssemblies

Esto no nos ha solucionado nada ya que todavía teníamos el AppPool mal configurado. Finalmente nos hemos dado cuenta de nuestro error, hemos cambiado el AppPool y hemos vuelto a ejecutar la aplicación… y todavía nos ha dado un error más sorprendente!!

404

Un 404!! Y un 404 sobre un controlador y una acción que no tenemos definido. Repasamos el web.config para ver si tenemos alguna redirección mal configurada y vemos que no es así. Finalmente, después de mucho buscar nos hemos encontrado con este salvador blog. En él, su autor explica que si teniendo una aplicación con autenticación forms y cambiándole en el web.config el controlador de autenticación, la aplicación se le redirige hacia el mismo controlador que a nosotros. El autor explica que esto es un bug conocido que pasa cuando estamos desplegando las librerías WebMatrix.Data.dll y WebMatrix.DataWeb.dll junto con nuestra aplicación. Aquí podéis ver el error en el Windows Connect. Esto que a él le pasa con autenticación forms, parece que también pasa con autenticación windows.

Finalmente hemos borrado estas dos librerías del bin de nuestra aplicación y voilà!

appok

Así que ya sabéis, id con cuidado con lo que desplegáis, no vayáis a tener resultados inesperados!!

Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *