Implementar aplicaciones de ASP.NET Core en Azure App Service
Nota:
Esta no es la versión más reciente de este artículo. Para la versión actual, consulta la versión .NET 8 de este artículo.
Advertencia
Esta versión de ASP.NET Core ya no se admite. Para obtener más información, consulta la Directiva de soporte técnico de .NET y .NET Core. Para la versión actual, consulta la versión .NET 8 de este artículo.
Importante
Esta información hace referencia a un producto en versión preliminar, el cual puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.
Para la versión actual, consulte la versión .NET 8 de este artículo.
Azure App Service es un servicio de plataforma de informática en la nube de Microsoft que sirve para hospedar aplicaciones web, como ASP.NET Core.
Patrones de aplicación web confiable
Consulte El patrón de aplicación web confiable para .NET vídeos de YouTube y artículo para obtener una guía sobre cómo crear una aplicación moderna, confiable, eficaz, comprobable, rentable y escalable ASP.NET Core, ya sea desde cero o refactorizando una aplicación existente.
Recursos útiles
La documentación de App Service es un recurso que incluye documentación, tutoriales, ejemplos, guías de procedimientos y otros recursos de aplicaciones de Azure. Dos tutoriales importantes que pertenecen al hospedaje de aplicaciones de ASP.NET Core son:
Creación de una aplicación web ASP.NET Core en Azure
Usar Visual Studio para crear e implementar una aplicación web de ASP.NET Core para Azure App Service en Windows.
Creación de una aplicación ASP.NET Core en App Service en Linux
Usar la línea de comandos para crear e implementar una aplicación web de ASP.NET Core para Azure App Service en Linux.
Consulte el panel ASP.NET Core en App Service para ver la versión de ASP.NET Core disponible en Azure App Service.
Suscríbase al repositorio App Service Announcements y supervise los problemas. El equipo de App Service publica periódicamente los anuncios y escenarios que llegan a App Service.
Los artículos siguientes están disponibles en la documentación de ASP.NET Core:
Publicar una aplicación de ASP.NET Core en Azure con Visual Studio
Obtenga información sobre cómo publicar una aplicación de ASP.NET Core en Azure App Service con Visual Studio.
Cree su primera canalización
Configure una compilación de integración continua para una aplicación de ASP.NET Core y, después, cree una versión de implementación continua para Azure App Service.
Espacio aislado de Azure Web App
Detecte limitaciones de ejecución en tiempo de ejecución de Azure App Service aplicadas por la plataforma de aplicaciones de Azure.
Solución de problemas y depuración de proyectos de ASP.NET Core
Conozca y solucione advertencias y errores en proyectos de ASP.NET Core.
Configuración de aplicaciones
Plataforma
La arquitectura de plataforma (x86/x64) de una aplicación de App Services se establece en la configuración de la aplicación de Azure Portal para las aplicaciones hospedadas en un cálculo de serie A (básico) o en un nivel de hospedaje superior. Confirme que la configuración de publicación de la aplicación (por ejemplo, en el perfil de publicación [.pubxml]) de Visual Studio coincide con los valores de configuración de servicio de la aplicación en Azure Portal.
Las aplicaciones de ASP.NET Core se pueden publicar dependientes del marco de trabajo porque los entornos de ejecución de aplicaciones de 64 bits (x64) y 32 bits (x86) están presentes en Azure App Service. El SDK de .NET Core que está disponible en App Service es para 32 bits, pero es posible implementar aplicaciones de 64 bits compiladas localmente con la consola de Kudu o el proceso de publicación de Visual Studio. Para obtener más información, consulte la sección Publicar e implementar la aplicación.
En el caso de las aplicaciones con dependencias nativas, los runtimes de 32 bits (x86) están presentes Azure App Service. El SDK de .NET Core disponible en App Service es de 32 bits.
Para obtener más detalles sobre los componentes y los métodos de distribución del marco .NET Core —por ejemplo, información sobre .NET Core Runtime—, consulte Sobre .NET Core: Composición.
Paquetes
Incluya los siguientes paquetes de NuGet para proporcionar características de registro automáticas para aplicaciones implementadas en Azure App Service:
- Microsoft.AspNetCore.AzureAppServices.HostingStartup utiliza IHostingStartup para proporcionar a ASP.NET Core integración de registros con Azure App Service. El paquete
Microsoft.AspNetCore.AzureAppServicesIntegration
proporciona las características de registro agregadas. - Microsoft.AspNetCore.AzureAppServicesIntegration ejecuta AddAzureWebAppDiagnostics para agregar a Azure App Service proveedores de registro de diagnósticos en el paquete
Microsoft.Extensions.Logging.AzureAppServices
. - Microsoft.Extensions.Logging.AzureAppServices proporciona implementaciones de registrador para admitir registros de diagnósticos de Azure App Service y características de transmisión en secuencias de registro.
Se debe hacer referencia explícita a los paquetes anteriores en el archivo del proyecto de la aplicación.
Invalidación de la configuración de la aplicación mediante Azure Portal
La configuración de la aplicación en Azure Portal le permite establecer variables de entorno para la aplicación. El proveedor de configuración de variables de entorno puede consumir las variables de entorno.
Cuando una configuración de aplicación se crea o modifica en Azure Portal y el botón Guardar está seleccionado, se reinicia la aplicación de Azure. La variable de entorno está disponible para la aplicación después de que se reinicie el servicio.
Cuando una aplicación usa el host genérico, las variables de entorno se cargan en la configuración de la aplicación cuando se llama a CreateDefaultBuilder para compilar el host. Para más información, vea Host genérico de .NET en ASP.NET Core y Proveedor de configuración de variables de entorno.
La configuración de la aplicación en Azure Portal le permite establecer variables de entorno para la aplicación. El proveedor de configuración de variables de entorno puede consumir las variables de entorno.
Cuando una configuración de aplicación se crea o modifica en Azure Portal y el botón Guardar está seleccionado, se reinicia la aplicación de Azure. La variable de entorno está disponible para la aplicación después de que se reinicie el servicio.
Cuando una aplicación usa el host web, las variables de entorno se cargan en la configuración de la aplicación cuando se llama a CreateDefaultBuilder para compilar el host. Para más información, vea Host web de ASP.NET Core y Proveedor de configuración de variables de entorno.
Escenarios de servidor proxy y equilibrador de carga
El middleware de integración con IIS, que configura el software intermedio de encabezados reenviados al hospedar fuera de proceso, y el módulo de ASP.NET Core están configurados para reenviar el esquema (HTTP/HTTPS) y la dirección IP remota donde se originó la solicitud. Podría ser necesario realizar una configuración adicional para las aplicaciones hospedadas detrás de servidores proxy y equilibradores de carga adicionales. Para más información, vea Configurar ASP.NET Core para trabajar con servidores proxy y equilibradores de carga.
Supervisión y registro
Las aplicaciones ASP.NET Core implementadas de forma automática en App Service reciben una extensión de App Service, Integración de registro de ASP.NET Core. La extensión habilita la integración de registro para las aplicaciones ASP.NET Core en Azure App Service.
Las aplicaciones de ASP.NET Core implementadas automáticamente en App Service reciben una extensión de App Service, Extensiones de registro de ASP.NET Core. La extensión habilita la integración de registro para las aplicaciones ASP.NET Core en Azure App Service.
Para obtener información sobre supervisión, registro y solución de problemas, consulte los artículos siguientes:
Supervisar aplicaciones en Azure App Service
Obtenga información sobre cómo revisar las cuotas y las métricas para las aplicaciones y los planes de App Service.
Habilitar el registro de diagnósticos para las aplicaciones en Azure App Service
Descubra cómo habilitar y acceder a registro de diagnóstico para los códigos de estado HTTP, solicitudes con error y actividad del servidor web.
Controlar errores en ASP.NET Core
Conozca los métodos habituales para controlar los errores en las aplicaciones de ASP.NET Core.
Solución de problemas de ASP.NET Core en Azure App Service e IIS
Obtenga información sobre cómo diagnosticar problemas con las implementaciones de Azure App Service con las aplicaciones de ASP.NET Core.
Solución de problemas comunes para Azure App Service e IIS con ASP.NET Core
Consulte los errores comunes de configuración de implementación para las aplicaciones hospedadas por Azure App Service/IIS con consejos de solución de problemas.
Anillo de clave de protección de datos y ranuras de implementación
Las claves de protección de datos se conservan en la carpeta %HOME%\ASP.NET\DataProtection-Keys. Esta carpeta está respaldada por el almacenamiento de red y se sincroniza en todas las máquinas que hospedan la aplicación. Las claves no están protegidas en reposo. Esta carpeta proporciona el anillo de clave a todas las instancias de una aplicación en una única ranura de implementación. Las ranuras de implementación independientes, por ejemplo, almacenamiento provisional y producción, no comparten ningún anillo de clave.
Al realizar un intercambio entre ranuras de implementación, cualquier sistema que utilice la protección de datos no podrá descifrar los datos almacenados mediante el anillo de clave situado dentro de la ranura anterior. El middleware de Cookie de ASP.NET usa protección de datos para proteger sus cookies. Esto hace que los usuarios cierren sesión en una aplicación que usa el middleware de Cookie de ASP.NET estándar. Para una solución de anillo de clave independiente de la ranura, utilice un proveedor de anillo de clave externo, como estos:
- Azure Blob Storage
- Azure Key Vault
- Almacén SQL
- Redis Cache
Para más información, vea Proveedores de almacenamiento de claves en ASP.NET Core.
Implementación de una aplicación ASP.NET Core que usa una versión preliminar de .NET Core
Para implementar una aplicación que usa una versión preliminar de .NET Core, consulte los siguientes recursos. Estos enfoques también se usan cuando el entorno de ejecución está disponible pero el SDK no se ha instalado en Azure App Service.
- Especificación del SDK de .NET Core con Azure Pipelines
- Implementación de la versión preliminar de una aplicación independiente
- Usar Docker con Web Apps para contenedores
- Instalación de la extensión de sitio de versión preliminar
Consulte el panel ASP.NET Core en App Service para ver la versión de ASP.NET Core disponible en Azure App Service.
Vea Selección de la versión de .NET Core que se va a usar para obtener información sobre cómo seleccionar la versión del SDK de .NET para implementaciones autocontenidas.
Especificación de la versión del SDK de .NET Core con Azure Pipelines
Use los escenarios de CI/CD de Azure App Service para configurar una compilación de integración continua con Azure DevOps. Después de crear la compilación de Azure DevOps, tiene la opción de configurar la compilación para usar una versión específica del SDK.
Especificación de la versión del SDK de .NET Core
Al usar el centro de implementación de App Service para crear una compilación de Azure DevOps, la canalización de compilación predeterminada incluye los pasos Restore
, Build
, Test
y Publish
. Para especificar la versión del SDK, seleccione el botón Add (+) (Agregar [+]) en la lista de trabajos del agente para agregar un nuevo paso. Busque .NET Core SDK (SDK de .NET Core) en la barra de búsqueda.
Mueva el paso a la primera posición de la compilación para que los pasos siguientes usen la versión especificada del SDK de .NET Core. Especifique la versión del SDK de .NET Core. En este ejemplo, el SDK se establece en 3.0.100
.
Para publicar una implementación independiente (SCD), configúrela en el paso Publish
y proporcione el identificador en tiempo de ejecución (RID).
Implementación de la versión preliminar de una aplicación independiente
Una implementación independiente (SCD) que tiene como destino un entorno de ejecución en versión preliminar transporta el entorno de ejecución en versión preliminar en la implementación.
Al implementar una aplicación independiente:
- El sitio en Azure App Service no requiere la extensión del sitio en versión preliminar.
- Se debe publicar la aplicación siguiendo un enfoque diferente que cuando se publica para una implementación dependiente del marco (FDD).
Siga las instrucciones de la sección Implementación de la aplicación independiente.
Usar Docker con Web Apps para contenedores
Docker Hub en https://hub.docker.com/_/microsoft-dotnet
contiene las imágenes de Docker de versión preliminar más recientes. Las imágenes se pueden usar como base. Use la imagen y efectúe la implementación en Web App for Containers con normalidad.
Instalación de la extensión de sitio de versión preliminar
Si tiene algún problema al usar la extensión de sitio de versión preliminar, abra una incidencia de dotnet/AspNetCore.
- En Azure Portal, vaya a App Service.
- Seleccione la aplicación web.
- Escriba "ex" en el cuadro de búsqueda para filtrar por "Extensiones" o desplácese hacia abajo en la lista de herramientas de administración.
- Seleccione Extensiones.
- Seleccione Agregar.
- Seleccione la extensión Runtime de ASP.NET Core {X.Y} ({x64|x86}) en la lista, en la que
{X.Y}
es la versión preliminar de ASP.NET Core y{x64|x86}
especifica la plataforma. - Seleccione Aceptar para aceptar los términos legales.
- Seleccione Aceptar para instalar la extensión.
Cuando se complete la operación, se instalará la versión preliminar de .NET Core. Compruebe la instalación:
Seleccione Herramientas avanzadas.
Seleccione Ir en Herramientas avanzadas.
Seleccione el elemento de menú Consola de depuración>PowerShell.
Ejecute el siguiente comando en el símbolo del sistema de PowerShell: Sustituya la versión de runtime de ASP.NET Core por
{X.Y}
y la plataforma por{PLATFORM}
en el comando:Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.{PLATFORM}\
El comando devuelve
True
cuando está instalado el runtime de la versión preliminar de x64.
Nota:
La arquitectura de plataforma (x86/x64) de una aplicación de App Services se establece en la configuración de la aplicación de Azure Portal para las aplicaciones hospedadas en un cálculo de serie A (básico) o en un nivel de hospedaje superior. Confirme que la configuración de publicación de la aplicación (por ejemplo, en el perfil de publicación [.pubxml]) de Visual Studio coincide con los valores de configuración de servicio de la aplicación en Azure Portal.
Si la aplicación se ejecuta en modo de en proceso y la arquitectura de plataforma está configurada para 64 bits (x64), el módulo ASP.NET Core usa el runtime de la versión preliminar de 64 bits, si está presente. Instale la extensión del entorno de ejecución de ASP.NET Core {X.Y} (x64) mediante Azure Portal.
Después de instalar el entorno de ejecución de la versión preliminar de x64, ejecute el siguiente comando en la ventana de comandos de Kudu PowerShell de Azure para comprobar la instalación. Sustituya la versión del entorno de ejecución de ASP.NET Core por {X.Y}
en el comando siguiente:
Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64\
El comando devuelve True
cuando está instalado el runtime de la versión preliminar de x64.
Nota:
Con Extensiones de ASP.NET Core se obtienen funciones adicionales para ASP.NET Core en Azure App Services, como habilitar el registro de Azure. La extensión se instala automáticamente cuando se implementa desde Visual Studio. Si no se instala la extensión, instálela para la aplicación.
Uso de la extensión de sitio de versión preliminar con una plantilla de ARM
Si usa una plantilla de ARM para crear e implementar aplicaciones, puede usar el tipo de recurso Microsoft.Web/sites/siteextensions
para agregar la extensión de sitio a una aplicación web. En el ejemplo siguiente, la extensión de sitio de ASP.NET Core 5.0 (x64) Runtime (AspNetCoreRuntime.5.0.x64
) se agrega a la aplicación:
{
...
"parameters": {
"site_name": {
"defaultValue": "{SITE NAME}",
"type": "String"
},
...
},
...
"resources": [
...
{
"type": "Microsoft.Web/sites/siteextensions",
"apiVersion": "2018-11-01",
"name": "[concat(parameters('site_name'), '/AspNetCoreRuntime.5.0.x64')]",
"location": "[resourceGroup().location]",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
]
}
]
}
Para el marcador de posición {SITE NAME}
, use el nombre de la aplicación en Azure App Service (por ejemplo, contoso
).
Publicar e implementar la aplicación
Para una implementación de 64 bits:
- Use un SDK de .NET Core de 64 bits para compilar una aplicación de 64 bits.
- Establezca la Plataforma en 64 bits en Configuración>Configuración general de App Service. La aplicación debe usar un plan de servicio básico o superior para habilitar la elección del valor de bits de la plataforma.
Implementación de la aplicación dependiente del marco de trabajo
Las aplicaciones publicadas como dependientes de la plataforma son multiplataforma y no incluyen el entorno de ejecución de .NET en la implementación. Azure App Service incluye el entorno de ejecución de .NET.
- Haga clic con el botón derecho en el proyecto, en el Explorador de soluciones, y seleccione Publicar. Como alternativa, seleccione Compilar>Publicar {nombre de la aplicación} desde la barra de herramientas de Visual Studio.
- En el cuadro de diálogo Publicar, seleccione Azure>Siguiente.
- Seleccione el servicio de Azure.
- Seleccione Advanced (Avanzadas). Se abre el cuadro de diálogo Publicar.
- Seleccione un grupo de recursos y un plan de hospedaje, o cree uno.
- Seleccione Finalizar.
- En la página Publicar:
- En Configuración, seleccione el icono de lápiz Editar configuración:
- Confirme que está seleccionada la configuración de Versión.
- En la lista desplegable Modo de implementación, seleccione Dependiente de marco de trabajo.
- En la lista desplegable Tiempo de ejecución de destino, seleccione el tiempo de ejecución deseado. El valor predeterminado es
win-x86
.
- Para quitar archivos adicionales tras la implementación, abra Opciones de publicación de archivos y seleccione la casilla de verificación para quitar archivos adicionales en el destino.
- Seleccione Guardar.
- Seleccione Publish.
- En Configuración, seleccione el icono de lápiz Editar configuración:
Implementación de la aplicación independiente
La publicación de la aplicación como independiente genera un archivo ejecutable específico de la plataforma. La carpeta de publicación de salida contiene todos los componentes de la aplicación, incluidas las bibliotecas y el entorno de ejecución de destino de .NET. Para obtener más información, vea [Publish self-contained]/dotnet/core/deploying/#publish-self-contained). Use Visual Studio o la CLI de .NET para una implementación autocontenida (SCD).
- Haga clic con el botón derecho en el proyecto, en el Explorador de soluciones, y seleccione Publicar. Como alternativa, seleccione Compilar>Publicar {nombre de la aplicación} desde la barra de herramientas de Visual Studio.
- En el cuadro de diálogo Publicar, seleccione Azure>Siguiente.
- Seleccione el servicio de Azure.
- Seleccione Advanced (Avanzadas). Se abre el cuadro de diálogo Publicar.
- Seleccione un grupo de recursos y un plan de hospedaje, o cree uno.
- Seleccione Finalizar.
- En la página Publicar:
- En Configuración, seleccione el icono de lápiz Editar configuración:
- Confirme que está seleccionada la configuración de Versión.
- En la lista desplegable Modo de implementación, seleccione Independiente.
- En la lista desplegable Tiempo de ejecución de destino, seleccione el tiempo de ejecución deseado. El valor predeterminado es
win-x86
.
- Para quitar archivos adicionales tras la implementación, abra Opciones de publicación de archivos y seleccione la casilla de verificación para quitar archivos adicionales en el destino.
- Seleccione Guardar.
- Seleccione Publish.
- En Configuración, seleccione el icono de lápiz Editar configuración:
Configuración del protocolo (HTTPS)
Los enlaces de protocolo seguro permiten especificar un certificado para usarlo al responder a solicitudes a través de HTTPS. Los enlaces requieren un certificado privado válido (.pfx) que se haya emitido para el nombre de host en cuestión. Para obtener más información, vea Tutorial: Enlace de un certificado SSL personalizado existente con Azure App Service.
Transformación de web.config
Si necesita transformar web.config al realizar la publicación (por ejemplo, establecer variables de entorno basadas en la configuración, el perfil o el entorno), consulte Transformación de web.config.
Recursos adicionales
- Información general de App Service
- Introducción a diagnósticos de Azure App Service
- Hospedaje de ASP.NET Core en una granja de servidores web
- Tutorial: Conectar para SQL Database de .NET App Service sin secretos mediante una identidad administrada
Azure App Service en Windows Server utiliza Internet Information Services (IIS). Kestrel y YARP en el front-end proporciona el equilibrador de carga. Los temas siguientes se aplican a la tecnología subyacente de IIS: