Compatibilidad de IIS de tiempo de desarrollo en Visual Studio para ASP.NET CoreDevelopment-time IIS support in Visual Studio for ASP.NET Core

Por Sourabh ShirhattiBy Sourabh Shirhatti

En este artículo se describe la compatibilidad de Visual Studio con la depuración de aplicaciones ASP.NET Core que se ejecutan con IIS en Windows Server.This article describes Visual Studio support for debugging ASP.NET Core apps running with IIS on Windows Server. En este tema se explica cómo habilitar este escenario y configurar un proyecto.This topic walks through enabling this scenario and setting up a project.

Requisitos previosPrerequisites

  • Visual Studio para Windows.Visual Studio for Windows
  • Carga de trabajo de ASP.NET y desarrollo webASP.NET and web development workload
  • Carga de trabajo Desarrollo multiplataforma de .NET Core.NET Core cross-platform development workload
  • Certificado de seguridad X.509 (para compatibilidad con HTTPS)X.509 security certificate (for HTTPS support)

Habilitar IISEnable IIS

  1. En Windows, navegue a Panel de control > Programas > Programas y características > Activar o desactivar las características de Windows (lado izquierdo de la pantalla).In Windows, navigate to Control Panel > Programs > Programs and Features > Turn Windows features on or off (left side of the screen).
  2. Active la casilla Internet Information Services.Select the Internet Information Services check box. Seleccione Aceptar.Select OK.

La instalación de IIS puede requerir un reinicio del sistema.The IIS installation may require a system restart.

Configurar IISConfigure IIS

IIS debe tener un sitio web configurado con lo siguiente:IIS must have a website configured with the following:

  • Nombre de host: por lo general, el sitio web predeterminado se usa con un nombre de host de localhost.Host name: Typically, the Default Web Site is used with a Host name of localhost. Sin embargo, sirve cualquier sitio web de IIS válido con un nombre de host único.However, any valid IIS website with a unique host name works.
  • Enlace de sitioSite Binding
    • Para las aplicaciones que requieran HTTPS, cree un enlace al puerto 443 con un certificado.For apps that require HTTPS, create a binding to port 443 with a certificate. Por lo general, se usa el certificado de desarrollo de IIS Express, pero cualquier certificado válido sirve.Typically, the IIS Express Development Certificate is used, but any valid certificate works.
    • Para las aplicaciones que usan HTTP, confirme la existencia de un enlace al puerto 80 o cree un enlace a dicho puerto si se trata de un sitio nuevo.For apps that use HTTP, confirm the existence of a binding to post 80 or create a binding to port 80 for a new site.
    • Utilice un enlace único para HTTP o HTTPS.Use a single binding for either HTTP or HTTPS. No se admite el enlace al mismo tiempo a los puertos HTTP y HTTPS.Binding to both HTTP and HTTPS ports simultaneously isn't supported.

Habilitación de la compatibilidad con IIS en tiempo de desarrollo en Visual StudioEnable development-time IIS support in Visual Studio

  1. Inicie el instalador de Visual Studio.Launch the Visual Studio installer.

  2. Seleccione Modificar para la instalación de Visual Studio que se pretende usar para la compatibilidad con IIS en tiempo de desarrollo.Select Modify for the Visual Studio installation that you plan to use for IIS development-time support.

  3. Para la carga de trabajo de Desarrollo de ASP.NET y web , busque e instale el componente Compatibilidad con IIS en tiempo de desarrollo.For the ASP.NET and web development workload, locate and install the Development time IIS support component.

    El componente se enumera en la sección Opcional, en Compatibilidad con IIS en tiempo de desarrollo, dentro del panel Detalles de instalación a la derecha de las cargas de trabajo.The component is listed in the Optional section under Development time IIS support in the Installation details panel to the right of the workloads. El componente instala el módulo ASP.NET Core, que es un módulo de IIS nativo necesario para ejecutar aplicaciones de ASP.NET Core con IIS.The component installs the ASP.NET Core Module, which is a native IIS module required to run ASP.NET Core apps with IIS.

Configuración del proyectoConfigure the project

Redireccionamiento de HTTPSHTTPS redirection

Para un nuevo proyecto que requiere HTTPS, seleccione la casilla Configurar para HTTPS en la ventana Crear una aplicación web ASP.NET Core.For a new project that requires HTTPS, select the check box to Configure for HTTPS in the Create a new ASP.NET Core Web Application window. Al seleccionar la casilla, se agrega redireccionamiento HTTPS y middleware HSTS a la aplicación cuando esta se crea.Selecting the check box adds HTTPS Redirection and HSTS Middleware to the app when it's created.

Para un proyecto existente que requiere HTTPS, use el redireccionamiento HTTPS y el middleware HSTS en Startup.Configure.For an existing project that requires HTTPS, use HTTPS Redirection and HSTS Middleware in Startup.Configure. Para obtener más información, vea Aplicación de HTTPS en ASP.NET Core.For more information, see Aplicación de HTTPS en ASP.NET Core.

Para un proyecto que usa HTTP, el redireccionamiento HTTPS y el middleware HSTS no se agregan a la aplicación.For a project that uses HTTP, HTTPS Redirection and HSTS Middleware aren't added to the app. No se requiere ninguna configuración de la aplicación.No app configuration is required.

Perfil de inicio de IISIIS launch profile

Cree un nuevo perfil de inicio para agregar la compatibilidad con IIS en tiempo de desarrollo:Create a new launch profile to add development-time IIS support:

  1. Haga clic con el botón derecho en el Explorador de soluciones.Right-click the project in Solution Explorer. Haga clic en Propiedades.Select Properties. Abra la pestaña Depurar.Open the Debug tab.

  2. En Perfil, seleccione el botón Nuevo.For Profile, select the New button. Asigne el perfil el nombre "IIS" en la ventana emergente.Name the profile "IIS" in the popup window. Seleccione Aceptar para crear el perfil.Select OK to create the profile.

  3. En Iniciar, seleccione IIS en la lista.For the Launch setting, select IIS from the list.

  4. Active la casilla Iniciar explorador y proporcione la dirección URL del punto de conexión.Select the check box for Launch browser and provide the endpoint URL.

    Si la aplicación requiere HTTPS, use un punto de conexión HTTPS (https://).When the app requires HTTPS, use an HTTPS endpoint (https://). Para HTTP, use un punto de conexión HTTP (http://).For HTTP, use an HTTP (http://) endpoint.

    Proporcione el mismo nombre de host y puerto especificados en la configuración de IIS establecida en usos anteriores, normalmente localhost.Provide the same host name and port as the IIS configuration specified earlier uses, typically localhost.

    Proporcione el nombre de la aplicación al final de la dirección URL.Provide the name of the app at the end of the URL.

    Por ejemplo, https://localhost/WebApplication1 (HTTPS) o http://localhost/WebApplication1 (HTTP) son direcciones URL de punto de conexión válidas.For example, https://localhost/WebApplication1 (HTTPS) or http://localhost/WebApplication1 (HTTP) are valid endpoint URLs.

  5. En la sección Variables de entorno, seleccione el botón Agregar.In the Environment variables section, select the Add button. Proporcione una variable de entorno con un Nombre de ASPNETCORE_ENVIRONMENT y un Valor de Development.Provide an environment variable with a Name of ASPNETCORE_ENVIRONMENT and a Value of Development.

  6. En el área Configuración del servidor web, defina la Dirección URL de la aplicación con el mismo valor utilizado para la dirección URL de punto de conexión de Iniciar el explorador.In the Web Server Settings area, set the App URL to the same value used for the Launch browser endpoint URL.

  7. Para la configuración del Modelo de hospedaje de Visual Studio 2019 o posterior, seleccione Predeterminado para usar el modelo de hospedaje utilizado por el proyecto.For the Hosting Model setting in Visual Studio 2019 or later, select Default to use the hosting model used by the project. Si el proyecto establece la propiedad <AspNetCoreHostingModel> en su archivo del proyecto, se usa el valor de la propiedad (InProcess o OutOfProcess).If the project sets the <AspNetCoreHostingModel> property in its project file, the value of the property (InProcess or OutOfProcess) is used. Si la propiedad no existe, se usa el modelo de hospedaje predeterminado de la aplicación, que está en proceso.If the property isn't present, the default hosting model of the app is used, which is in-process. Si la aplicación requiere una configuración del modelo de hospedaje distinta a la del modelo de hospedaje habitual de la aplicación, defina el Modelo de hospedaje como In Process o Out Of Process, según proceda.If the app requires an explicit hosting model setting different from the app's normal hosting model, set the Hosting Model to either In Process or Out Of Process as needed.

  8. Guarde el perfil.Save the profile.

Si no se usa Visual Studio, agregue manualmente un perfil de inicio al archivo launchSettings.json en la carpeta Propiedades.When not using Visual Studio, manually add a launch profile to the launchSettings.json file in the Properties folder. El siguiente ejemplo configura el perfil para usar el protocolo HTTPS:The following example configures the profile to use the HTTPS protocol:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iis": {
      "applicationUrl": "https://localhost/WebApplication1",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS": {
      "commandName": "IIS",
      "launchBrowser": true,
      "launchUrl": "https://localhost/WebApplication1",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

Confirme que los puntos de conexión applicationUrl y launchUrl coinciden y use el mismo protocolo que la configuración de enlace de IIS, es decir, HTTP o HTTPS.Confirm that the applicationUrl and launchUrl endpoints match and use the same protocol as the IIS binding configuration, either HTTP or HTTPS.

Ejecución del proyectoRun the project

Ejecute Visual Studio como administrador:Run Visual Studio as an administrator:

  • Confirme que la lista desplegable de configuración de compilación está configurada como Depurar.Confirm that the build configuration drop-down list is set to Debug.
  • Establezca el botón Iniciar depuración en el perfil de IIS y seleccione el botón para iniciar la aplicación.Set the Start Debugging button to the IIS profile and select the button to start the app.

Visual Studio puede solicitar un reinicio si no se ejecuta como administrador.Visual Studio may prompt a restart if not running as an administrator. Si es así, reinicie Visual Studio.If prompted, restart Visual Studio.

Si se usa un certificado de desarrollo que no es de confianza, el explorador puede pedirle que cree una excepción para un certificado de esta clase.If an untrusted development certificate is used, the browser may require you to create an exception for the untrusted certificate.

Nota

La depuración de una configuración de compilación de versión con Solo mi código y las optimizaciones del compilador degradan el rendimiento.Debugging a Release build configuration with Just My Code and compiler optimizations results in a degraded experience. Por ejemplo, no se alcanzan los puntos de interrupción.For example, break points aren't hit.

Recursos adicionalesAdditional resources

En este artículo se describe la compatibilidad de Visual Studio con la depuración de aplicaciones ASP.NET Core que se ejecutan con IIS en Windows Server.This article describes Visual Studio support for debugging ASP.NET Core apps running with IIS on Windows Server. En este tema se explica cómo habilitar este escenario y configurar un proyecto.This topic walks through enabling this scenario and setting up a project.

Requisitos previosPrerequisites

  • Visual Studio para Windows.Visual Studio for Windows
  • Carga de trabajo de ASP.NET y desarrollo webASP.NET and web development workload
  • Carga de trabajo Desarrollo multiplataforma de .NET Core.NET Core cross-platform development workload
  • Certificado de seguridad X.509 (para compatibilidad con HTTPS)X.509 security certificate (for HTTPS support)

Habilitar IISEnable IIS

  1. En Windows, navegue a Panel de control > Programas > Programas y características > Activar o desactivar las características de Windows (lado izquierdo de la pantalla).In Windows, navigate to Control Panel > Programs > Programs and Features > Turn Windows features on or off (left side of the screen).
  2. Active la casilla Internet Information Services.Select the Internet Information Services check box. Seleccione Aceptar.Select OK.

La instalación de IIS puede requerir un reinicio del sistema.The IIS installation may require a system restart.

Configurar IISConfigure IIS

IIS debe tener un sitio web configurado con lo siguiente:IIS must have a website configured with the following:

  • Nombre de host: por lo general, el sitio web predeterminado se usa con un nombre de host de localhost.Host name: Typically, the Default Web Site is used with a Host name of localhost. Sin embargo, sirve cualquier sitio web de IIS válido con un nombre de host único.However, any valid IIS website with a unique host name works.
  • Enlace de sitioSite Binding
    • Para las aplicaciones que requieran HTTPS, cree un enlace al puerto 443 con un certificado.For apps that require HTTPS, create a binding to port 443 with a certificate. Por lo general, se usa el certificado de desarrollo de IIS Express, pero cualquier certificado válido sirve.Typically, the IIS Express Development Certificate is used, but any valid certificate works.
    • Para las aplicaciones que usan HTTP, confirme la existencia de un enlace al puerto 80 o cree un enlace a dicho puerto si se trata de un sitio nuevo.For apps that use HTTP, confirm the existence of a binding to post 80 or create a binding to port 80 for a new site.
    • Utilice un enlace único para HTTP o HTTPS.Use a single binding for either HTTP or HTTPS. No se admite el enlace al mismo tiempo a los puertos HTTP y HTTPS.Binding to both HTTP and HTTPS ports simultaneously isn't supported.

Habilitación de la compatibilidad con IIS en tiempo de desarrollo en Visual StudioEnable development-time IIS support in Visual Studio

  1. Inicie el instalador de Visual Studio.Launch the Visual Studio installer.

  2. Seleccione Modificar para la instalación de Visual Studio que se pretende usar para la compatibilidad con IIS en tiempo de desarrollo.Select Modify for the Visual Studio installation that you plan to use for IIS development-time support.

  3. Para la carga de trabajo de Desarrollo de ASP.NET y web , busque e instale el componente Compatibilidad con IIS en tiempo de desarrollo.For the ASP.NET and web development workload, locate and install the Development time IIS support component.

    El componente se enumera en la sección Opcional, en Compatibilidad con IIS en tiempo de desarrollo, dentro del panel Detalles de instalación a la derecha de las cargas de trabajo.The component is listed in the Optional section under Development time IIS support in the Installation details panel to the right of the workloads. El componente instala el módulo ASP.NET Core, que es un módulo de IIS nativo necesario para ejecutar aplicaciones de ASP.NET Core con IIS.The component installs the ASP.NET Core Module, which is a native IIS module required to run ASP.NET Core apps with IIS.

Configuración del proyectoConfigure the project

Redireccionamiento de HTTPSHTTPS redirection

Para un nuevo proyecto que requiere HTTPS, seleccione la casilla Configurar para HTTPS en la ventana Crear una aplicación web ASP.NET Core.For a new project that requires HTTPS, select the check box to Configure for HTTPS in the Create a new ASP.NET Core Web Application window. Al seleccionar la casilla, se agrega redireccionamiento HTTPS y middleware HSTS a la aplicación cuando esta se crea.Selecting the check box adds HTTPS Redirection and HSTS Middleware to the app when it's created.

Para un proyecto existente que requiere HTTPS, use el redireccionamiento HTTPS y el middleware HSTS en Startup.Configure.For an existing project that requires HTTPS, use HTTPS Redirection and HSTS Middleware in Startup.Configure. Para obtener más información, vea Aplicación de HTTPS en ASP.NET Core.For more information, see Aplicación de HTTPS en ASP.NET Core.

Para un proyecto que usa HTTP, el redireccionamiento HTTPS y el middleware HSTS no se agregan a la aplicación.For a project that uses HTTP, HTTPS Redirection and HSTS Middleware aren't added to the app. No se requiere ninguna configuración de la aplicación.No app configuration is required.

Perfil de inicio de IISIIS launch profile

Cree un nuevo perfil de inicio para agregar la compatibilidad con IIS en tiempo de desarrollo:Create a new launch profile to add development-time IIS support:

  1. Haga clic con el botón derecho en el Explorador de soluciones.Right-click the project in Solution Explorer. Haga clic en Propiedades.Select Properties. Abra la pestaña Depurar.Open the Debug tab.

  2. En Perfil, seleccione el botón Nuevo.For Profile, select the New button. Asigne el perfil el nombre "IIS" en la ventana emergente.Name the profile "IIS" in the popup window. Seleccione Aceptar para crear el perfil.Select OK to create the profile.

  3. En Iniciar, seleccione IIS en la lista.For the Launch setting, select IIS from the list.

  4. Active la casilla Iniciar explorador y proporcione la dirección URL del punto de conexión.Select the check box for Launch browser and provide the endpoint URL.

    Si la aplicación requiere HTTPS, use un punto de conexión HTTPS (https://).When the app requires HTTPS, use an HTTPS endpoint (https://). Para HTTP, use un punto de conexión HTTP (http://).For HTTP, use an HTTP (http://) endpoint.

    Proporcione el mismo nombre de host y puerto especificados en la configuración de IIS establecida en usos anteriores, normalmente localhost.Provide the same host name and port as the IIS configuration specified earlier uses, typically localhost.

    Proporcione el nombre de la aplicación al final de la dirección URL.Provide the name of the app at the end of the URL.

    Por ejemplo, https://localhost/WebApplication1 (HTTPS) o http://localhost/WebApplication1 (HTTP) son direcciones URL de punto de conexión válidas.For example, https://localhost/WebApplication1 (HTTPS) or http://localhost/WebApplication1 (HTTP) are valid endpoint URLs.

  5. En la sección Variables de entorno, seleccione el botón Agregar.In the Environment variables section, select the Add button. Proporcione una variable de entorno con un Nombre de ASPNETCORE_ENVIRONMENT y un Valor de Development.Provide an environment variable with a Name of ASPNETCORE_ENVIRONMENT and a Value of Development.

  6. En el área Configuración del servidor web, defina la Dirección URL de la aplicación con el mismo valor utilizado para la dirección URL de punto de conexión de Iniciar el explorador.In the Web Server Settings area, set the App URL to the same value used for the Launch browser endpoint URL.

  7. Para la configuración del Modelo de hospedaje de Visual Studio 2019 o posterior, seleccione Predeterminado para usar el modelo de hospedaje utilizado por el proyecto.For the Hosting Model setting in Visual Studio 2019 or later, select Default to use the hosting model used by the project. Si el proyecto establece la propiedad <AspNetCoreHostingModel> en su archivo del proyecto, se usa el valor de la propiedad (InProcess o OutOfProcess).If the project sets the <AspNetCoreHostingModel> property in its project file, the value of the property (InProcess or OutOfProcess) is used. Si la propiedad no existe, se usa el modelo de hospedaje predeterminado de la aplicación, que está fuera de proceso.If the property isn't present, the default hosting model of the app is used, which is out-of-process. Si la aplicación requiere una configuración del modelo de hospedaje distinta a la del modelo de hospedaje habitual de la aplicación, defina el Modelo de hospedaje como In Process o Out Of Process, según proceda.If the app requires an explicit hosting model setting different from the app's normal hosting model, set the Hosting Model to either In Process or Out Of Process as needed.

  8. Guarde el perfil.Save the profile.

Si no se usa Visual Studio, agregue manualmente un perfil de inicio al archivo launchSettings.json en la carpeta Propiedades.When not using Visual Studio, manually add a launch profile to the launchSettings.json file in the Properties folder. El siguiente ejemplo configura el perfil para usar el protocolo HTTPS:The following example configures the profile to use the HTTPS protocol:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iis": {
      "applicationUrl": "https://localhost/WebApplication1",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS": {
      "commandName": "IIS",
      "launchBrowser": true,
      "launchUrl": "https://localhost/WebApplication1",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

Confirme que los puntos de conexión applicationUrl y launchUrl coinciden y use el mismo protocolo que la configuración de enlace de IIS, es decir, HTTP o HTTPS.Confirm that the applicationUrl and launchUrl endpoints match and use the same protocol as the IIS binding configuration, either HTTP or HTTPS.

Ejecución del proyectoRun the project

Ejecute Visual Studio como administrador:Run Visual Studio as an administrator:

  • Confirme que la lista desplegable de configuración de compilación está configurada como Depurar.Confirm that the build configuration drop-down list is set to Debug.
  • Establezca el botón Iniciar depuración en el perfil de IIS y seleccione el botón para iniciar la aplicación.Set the Start Debugging button to the IIS profile and select the button to start the app.

Visual Studio puede solicitar un reinicio si no se ejecuta como administrador.Visual Studio may prompt a restart if not running as an administrator. Si es así, reinicie Visual Studio.If prompted, restart Visual Studio.

Si se usa un certificado de desarrollo que no es de confianza, el explorador puede pedirle que cree una excepción para un certificado de esta clase.If an untrusted development certificate is used, the browser may require you to create an exception for the untrusted certificate.

Nota

La depuración de una configuración de compilación de versión con Solo mi código y las optimizaciones del compilador degradan el rendimiento.Debugging a Release build configuration with Just My Code and compiler optimizations results in a degraded experience. Por ejemplo, no se alcanzan los puntos de interrupción.For example, break points aren't hit.

Recursos adicionalesAdditional resources