Ejercicio: asociación del depurador de Visual Studio a una aplicación web de App Service

Completado

En este momento, la aplicación se implementa en Azure, pero no funciona de forma correcta. La aplicación sigue funcionando de forma local, por lo que es difícil determinar exactamente lo que está causando el problema sin una investigación adicional. Visual Studio puede ayudarle fácilmente a resolver este problema mediante la asociación del depurador al proceso de App Service en Azure. Los pasos siguientes le permitirán depurar la aplicación como si se estuviera ejecutando localmente.

Nota

Antes de intentar adjuntar el depurador, asegúrese siempre de que el estado del código local coincide con lo que se implementó en Azure. Esto garantiza que los archivos de símbolos locales y el código fuente se alineen con la aplicación implementada. En una aplicación real, si usa Git para administrar el proyecto, querrá restaurar la misma confirmación o versión que se implementó.

Configuración de los valores de depuración

Asegúrese de haber completado los pasos siguientes en Visual Studio antes de depurar una aplicación en Azure para asegurarse de que se ha realizado correctamente.

  1. En primer lugar, asegúrese de que ha compilado correctamente el proyecto al menos una vez. Una compilación correcta garantiza que el código fuente y los archivos compilados necesarios estén listos para usarse. Si la aplicación se ejecuta localmente, asegúrese de detenerla.

  2. Vaya a Depuración -> Opciones en el menú superior de Visual Studio. Asegúrese de que la opción Habilitar Solo mi código está desactivada y, después, seleccione Aceptar.

    El cambio de esta configuración permite a Visual Studio depurar el código optimizado que se implementó en Azure mediante los archivos de símbolos necesarios de la carpeta local bin. El depurador usa los archivos de símbolos como un puente entre código compilado en ejecución y el código fuente en Visual Studio, por lo que es importante que el código fuente local coincida con la aplicación de implementación.

    A screenshot of the Visual Studio debugging settings.

Asociación del depurador a App Service

  1. En el menú principal de la parte superior de Visual Studio, seleccione Depurar -> Asociar al proceso para abrir el cuadro de diálogo correspondiente. Con esta ventana puede conectarse y adjuntar a diferentes destinos. En este caso, se conectará a la instancia de App Service que creó en el paso anterior.

  2. Seleccione la lista desplegable Tipo de conexión y elija la opción Microsoft Azure App Services.

  3. Seleccione Buscar.. junto al campo Destino de la conexión para abrir un cuadro de diálogo que le permita examinar las suscripciones de Azure y los servicios de aplicaciones.

  4. Busque y seleccione el App Service GitHubBrowser123 que creó en el paso anterior y, después, elija Aceptar.

  5. El proceso w3wp.exe debería aparecer en la lista de procesos disponibles a los que conectarse, que es el proceso principal del Azure App Service que hospeda la aplicación implementada. Seleccione ese proceso y, después, elija Asociar en la parte inferior derecha para conectar el depurador de Visual Studio.

    A screenshot of the attach to process features.

  6. En Index.cshtml.cs, vaya a la primera línea del método OnPost y haga clic en el margen izquierdo para establezcer un punto de interrupción en ese método. (O bien, haga clic con el botón derecho y elija Punto de interrupción>Insertar punto de interrupción).

    El método OnPost dentro de Index.cshtml.cs controla la mayor parte de la lógica de la aplicación.

  7. Opcionalmente, también puede comprobar que Visual Studio ha cargado los archivos de símbolos de la sesión de depuración. Vaya a Depurar > Windows > Módulos para abrir la ventana de módulos. Esta ventana debería indicar que los archivos de símbolos se cargaron de forma correcta para el archivo .dll del explorador de GitHub después de los cambios en la configuración de Solo mi código realizados anteriormente.

    A screenshot of the symbol files window.

Solución de problemas del error

Una vez cargados los símbolos, puede depurar la aplicación hospedada de Azure del mismo modo que lo haría localmente.

  1. Con el punto de interrupción establecido en Visual Studio, cambie a la aplicación en el explorador, escriba un valor de dotnet en el cuadro de búsqueda de la aplicación y, después, presione Enviar. Visual Studio alcanzará el punto de interrupción dentro del método OnPost. La primera vez puede tardar un momento en sincronizarse. El código intentará recuperar el valor GitHubUrl mediante el servicio IConfiguration. De forma predeterminada, el servicio de configuración carga valores del archivo appsettings.json en la aplicación.

  2. Use el botón Depurar paso a paso por procedimientos en los controles de depuración de Visual Studio (o bien presione F10) para pasar a la línea de código que crea searchUrl. Coloque el cursor del mouse sobre la variable githubUrl sobre ella, verá que el valor es actualmente null. Este código funcionó correctamente de forma local, ¿por qué en Azure el valor es NULL?

  3. Abra el archivo appsettings.json para investigar más. Dentro de este archivo hay algunos conjuntos de configuración en torno al registro, pero no se encuentra ningún valor GitHubUrl.

  4. Abra el archivo appsettings.Development.json .

    Al configurar el proyecto de muestra, ha actualizado las opciones de configuración en appsettings.Development.json. Este archivo contiene configuraciones que solo se aplicarán durante la ejecución durante el desarrollo; no cuando se implementan en Azure. Olvidarse de establecer configuraciones para la versión de producción de la aplicación hospedada en Azure es un origen común de errores.

    A screenshot of the application development settings.

  5. Copie el par clave-valor GitHubUrl de appsettings.Development.json y péguelo en el archivo appsettings.json de nivel superior para que ambos archivos coincidan. El nuevo valor de configuración viajará con él en el archivo appsettings.json cuando la aplicación se vuelva a implementar en Azure.

    El archivo appsettings.json debe tener un aspecto similar a este.

    A screenshot of the application settings.

  6. Desasocie el depurador de App Service presionando el botón detener situado en la parte superior de Visual Studio, al igual que una sesión de depuración local.

  7. Para volver a implementar los cambios realizados, haga clic con el botón derecho en el nodo del proyecto en el Explorador de soluciones y elija Publicar de nuevo.

  8. En la pantalla de perfil de publicación, toda la configuración de implementación original todavía está en su lugar, por lo que presione Publicar de nuevo para volver a implementar en Azure.

  9. Cuando se complete la implementación, Visual Studio iniciará un explorador para volver a mostrar la aplicación. Vuelva a escribir dotnet en el formulario de búsqueda y presione entrar. Ahora se cargará correctamente una lista de repositorios.

    ¡Enhorabuena! Ha resuelto correctamente un error en el Azure App Service mediante Visual Studio.