Aunque no es una opción recomendable depurar (o debugar, perdón por el palabro pero a veces es el más utilizado) en producción o pre-produccion, seguro que casi todos hemos tenido una situación de «en local funciona pero en remoto se comporta de manera diferente». Aunque cada vez hay más opciones para evitar este tipo de situaciones bien es cierto que a veces tenemos un susto de este tipo y una de las opciones más rápidas para ver que está pasando pasa por depurar la aplicación en remoto y ver que está fallando. Hasta aquí todo sencillo, y aparentemente Visual Studio nos da las herramientas necesarias para depurar una Web App de Azure, pero cuando nos ponemos con ello nos hemos encontrado diferentes problemas.
Antes de nada es importante publicar en la Web App una versión de «Debug» para que podamos tener los símbolos. Si la versión que está instalada es «Release» no podremos ejecutarla en debug.
Usar Cloud Explorer para depurar en Remoto
Una de las opciones que muchos desarrolladores recomiendan en los foros es usar el Cloud Explorer para no tener problemas con el debugger en remoto.
El Cloud Explorer es una herramienta pensada para administrar los recursos de Azure desde el Propio Visual Studio. Si no os aparece podéis activar esta ventana desde el menú Ver->Cloud Explorer
Desde dentro del Cloud Explorer podemos iniciar el Debug en remoto del Web App (al menos en teoría). Basta con situarnos en la rama del Web App, pulsar el botón derecho y pulsar sobre Asociar depurador
En teoría, una vez hecho esto, pasados 10-15 segundos se debería asociar a un proceso remoto y comenzar a funcionar el debug de igual forma a cuando estamos realizando en local. En nuestro caso no hemos logrado que funcione. Siempre se quedaba en una ventana mostrando el mensaje Buscando un proceso para asociar…. , y dejando a Visual Studio «colgado» pero a la vez dejando la Web App remota también «colgada», como si estuviera en debug pero nadie la estuviera debugando
Tras muchas pruebas y mensajes con los ingenieros de microsoft revisando procesos en Azure, firewall local, etc. no hemos logrado hacer que funcione, por lo que suponemos que será un bug de Visual Studio 2019 16.4.5 (versión más actual a día de hoy) o del Cloud Explorer. Siguiendo con nuestras pruebas (ya sin mucha fe, todo hay que decirlo), probamos con la opción de Depurar manualmente
Depurar Manualmente en Remoto
Desde el menú Depurar, debes eligir la opción Asociar al proceso.
Tendrás que introducir la url de tu Web App finalizando en :4024 (puerto utilizado por Visual Studio 2019) y te solicitará el usuario y contraseña de publicación (el usuario comenzará por $ ). Si desconoces el usuario y contraseña lo puedes obtener desde el portal de azure, desde el Perfil de Publicación de tu App Service:
Una vez introducidas las credenciales correctas, nos aparecen los procesos de donde tenemos que seleccionar el proceso que hay que asociar para depurar.
En nuestro caso es una aplicación .NET Core, por lo que hay que seleccionar Codigo Administrado (CoreCLR), y en la lista de procesos dotnet.exe. Pulsar Asociar y el debug funcionará exactamente igual que en una sesión local.