Hospedaje e implementación de ASP.NET Core
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.
En general, para implementar una aplicación de ASP.NET Core en un entorno de hospedaje:
- Implemente la aplicación publicada en una carpeta en el servidor de hospedaje.
- Configure un administrador de procesos que inicie la aplicación cuando lleguen las solicitudes y la reinicie si se bloquea o si se reinicia el servidor.
- Para configurar un proxy inverso, configure un proxy inverso para reenviar solicitudes a la aplicación.
Para obtener una guía sobre hospedaje y la implementación de Blazor, que se agregue o reemplace la guía de este nodo, consulta Hospedaje e implementación de Blazor en ASP.NET Core.
Publicar la aplicación en una carpeta
El comando dotnet publish compila el código de la aplicación y copia los archivos necesarios para ejecutar la aplicación en una carpeta publish. Al efectuar una implementación desde Visual Studio, el paso dotnet publish
se lleva a cabo de forma automática antes de que los archivos se copien en el destino de implementación.
Ejecución de la aplicación publicada
Para ejecutar la aplicación publicada localmente, ejecute dotnet <ApplicationName>.dll
desde la carpeta publish.
Publicación de los archivos de configuración
Los archivos *.json
se publican de forma predeterminada. Para publicar otros archivos de configuración, especifíquelos en un elemento <ItemGroup><Content Include= ... />
en el archivo de proyecto. En el ejemplo siguiente, se publican archivos XML:
<ItemGroup>
<Content Include="**\*.xml" Exclude="bin\**\*;obj\**\*"
CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
Contenido de la carpeta
La carpeta publish contiene uno o varios archivos de ensamblado de aplicaciones, dependencias y, opcionalmente, el entorno de ejecución. NET.
Se puede publicar una aplicación .NET Core como implementación independiente o implementación dependiente del marco. Si la aplicación es independiente, los archivos de ensamblado que contienen el entorno de ejecución .NET se incluyen en la carpeta publish. Si la aplicación es dependiente del marco, los archivos del tiempo de ejecución .NET no se incluyen porque la aplicación tiene una referencia a una versión de .NET que está instalada en el servidor. El modelo de implementación predeterminado es dependiente del marco. Para más información, vea Implementación de aplicaciones .NET Core.
Además de los archivos .exe y .dll, la carpeta publish de una aplicación ASP.NET Core suele contener archivos de configuración, recursos estáticos y vistas de MVC. Para más información, vea Estructura de directorios de ASP.NET Core.
Configurar un administrador de procesos
Una aplicación de ASP.NET Core es una aplicación de consola que se debe iniciar cuando se inicia un servidor y se debe reiniciar si este se bloquea. Para automatizar los inicios y los reinicios, se necesita un administrador de procesos. Los administradores de procesos más comunes para ASP.NET Core son:
- Linux
- Windows
Configurar un proxy inverso
Si la aplicación usa el servidor Kestrel, nginx o IIS se puede usar como servidor proxy inverso. Un servidor proxy inverso recibe las solicitudes HTTP de Internet y las reenvía a Kestrel.
Cualquiera de las configuraciones, con o sin servidor proxy inverso, es una configuración de hospedaje admitida. Para más información, consulte Cuándo se debe usar Kestrel con un proxy inverso.
Cualquiera de las configuraciones, con o sin servidor proxy inverso, es una configuración de hospedaje admitida. Para más información, consulte Cuándo se debe usar Kestrel con un proxy inverso.
Escenarios de servidor proxy y equilibrador de carga
Podría ser necesario realizar una configuración adicional para las aplicaciones hospedadas detrás de servidores proxy y equilibradores de carga. Sin una configuración adicional, una aplicación podría no tener acceso al esquema (HTTP/HTTPS) y la dirección IP remota donde se originó una solicitud. Para más información, vea Configurar ASP.NET Core para trabajar con servidores proxy y equilibradores de carga.
Uso de Visual Studio y MSBuild para automatizar implementaciones
La implementación a menudo requiere tareas adicionales además de copiar el resultado del comando dotnet publish en un servidor. Por ejemplo, podrían necesitarse o eliminarse archivos adicionales de la carpeta publish. Para la implementación web, Visual Studio usa MSBuild, que se puede personalizar de modo que lleve a cabo muchas otras tareas durante la implementación. Para más información, vea Perfiles de publicación (.pubxml) de Visual Studio para la implementación de aplicaciones ASP.NET Core y el libro Using MSBuild and Team Foundation Build (Usar MSBuild y Team Foundation Build).
Mediante la característica de publicación web, puede implementar aplicaciones directamente desde Visual Studio en Azure App Service. Azure DevOps Services es compatible con la implementación continua en Azure App Service. Para más información, consulte DevOps para ASP.NET Core Developers.
Publicar en Azure
Vea Publicar una aplicación de ASP.NET Core en Azure con Visual Studio para obtener instrucciones sobre cómo publicar una aplicación en Azure con Visual Studio. Crear una aplicación web de ASP.NET Core en Azure proporciona un ejemplo adicional.
Publicar con MSDeploy en Windows
Vea Perfiles de publicación (.pubxml) de Visual Studio para la implementación de aplicaciones ASP.NET Core para ver instrucciones sobre cómo publicar una aplicación con un perfil de publicación de Visual Studio, incluyendo desde un símbolo del sistema de Windows mediante el comando dotnet msbuild.
Internet Information Services (IIS)
Para las implementaciones en Internet Information Services (IIS) con la configuración proporcionada por el archivo web.config, consulte los artículos en Hospedaje de ASP.NET Core en Windows con IIS.
Hospedaje en una granja de servidores web
Para más información sobre la configuración del hospedaje de aplicaciones de ASP.NET Core en un entorno de granja de servidores web (por ejemplo, para implementar varias instancias de la aplicación para escalabilidad), vea Hospedaje de ASP.NET Core en una granja de servidores web.
Host en Docker
Para más información, vea Hospedar ASP.NET Core en contenedores de Docker.
Realización de comprobaciones de estado
Use middleware de comprobación de estado para realizar comprobaciones de estado en una aplicación y sus dependencias. Para obtener más información, consulte Comprobaciones de estado en ASP.NET Core.
Recursos adicionales
En general, para implementar una aplicación de ASP.NET Core en un entorno de hospedaje:
- Implemente la aplicación publicada en una carpeta en el servidor de hospedaje.
- Configure un administrador de procesos que inicie la aplicación cuando lleguen las solicitudes y la reinicie si se bloquea o si se reinicia el servidor.
- Para configurar un proxy inverso, configure un proxy inverso para reenviar solicitudes a la aplicación.
Publicar la aplicación en una carpeta
El comando dotnet publish compila el código de la aplicación y copia los archivos necesarios para ejecutar la aplicación en una carpeta publish. Al efectuar una implementación desde Visual Studio, el paso dotnet publish
se lleva a cabo de forma automática antes de que los archivos se copien en el destino de implementación.
Contenido de la carpeta
La carpeta publish contiene uno o varios archivos de ensamblado de aplicaciones, dependencias y, opcionalmente, el entorno de ejecución. NET.
Se puede publicar una aplicación .NET Core como implementación independiente o implementación dependiente del marco. Si la aplicación es independiente, los archivos de ensamblado que contienen el entorno de ejecución .NET se incluyen en la carpeta publish. Si la aplicación es dependiente del marco, los archivos del tiempo de ejecución .NET no se incluyen porque la aplicación tiene una referencia a una versión de .NET que está instalada en el servidor. El modelo de implementación predeterminado es dependiente del marco. Para más información, vea Implementación de aplicaciones .NET Core.
Además de los archivos .exe y .dll, la carpeta publish de una aplicación ASP.NET Core suele contener archivos de configuración, recursos estáticos y vistas de MVC. Para más información, vea Estructura de directorios de ASP.NET Core.
Configurar un administrador de procesos
Una aplicación de ASP.NET Core es una aplicación de consola que se debe iniciar cuando se inicia un servidor y se debe reiniciar si este se bloquea. Para automatizar los inicios y los reinicios, se necesita un administrador de procesos. Los administradores de procesos más comunes para ASP.NET Core son:
- Linux
- Windows
Configurar un proxy inverso
Si la aplicación usa el servidor Kestrel, nginx o IIS se puede usar como servidor proxy inverso. Un servidor proxy inverso recibe las solicitudes HTTP de Internet y las reenvía a Kestrel.
Cualquiera de las configuraciones, con o sin servidor proxy inverso, es una configuración de hospedaje admitida. Para más información, consulte Cuándo se debe usar Kestrel con un proxy inverso.
Escenarios de servidor proxy y equilibrador de carga
Podría ser necesario realizar una configuración adicional para las aplicaciones hospedadas detrás de servidores proxy y equilibradores de carga. Sin una configuración adicional, una aplicación podría no tener acceso al esquema (HTTP/HTTPS) y la dirección IP remota donde se originó una solicitud. Para más información, vea Configurar ASP.NET Core para trabajar con servidores proxy y equilibradores de carga.
Uso de Visual Studio y MSBuild para automatizar implementaciones
La implementación a menudo requiere tareas adicionales además de copiar el resultado del comando dotnet publish en un servidor. Por ejemplo, podrían necesitarse o eliminarse archivos adicionales de la carpeta publish. Para la implementación web, Visual Studio usa MSBuild, que puede personalizar de modo que lleve a cabo muchas otras tareas durante la implementación. Para más información, vea Perfiles de publicación (.pubxml) de Visual Studio para la implementación de aplicaciones ASP.NET Core y el libro Using MSBuild and Team Foundation Build (Usar MSBuild y Team Foundation Build).
Mediante la característica de publicación web, puede implementar aplicaciones directamente desde Visual Studio en Azure App Service. Azure DevOps Services es compatible con la implementación continua en Azure App Service. Para más información, consulte DevOps para ASP.NET Core Developers.
Publicar en Azure
Vea Publicar una aplicación de ASP.NET Core en Azure con Visual Studio para obtener instrucciones sobre cómo publicar una aplicación en Azure con Visual Studio. Crear una aplicación web de ASP.NET Core en Azure proporciona un ejemplo adicional.
Publicar con MSDeploy en Windows
Vea Perfiles de publicación (.pubxml) de Visual Studio para la implementación de aplicaciones ASP.NET Core para ver instrucciones sobre cómo publicar una aplicación con un perfil de publicación de Visual Studio, incluyendo desde un símbolo del sistema de Windows mediante el comando dotnet msbuild.
Internet Information Services (IIS)
Para las implementaciones en Internet Information Services (IIS) con la configuración proporcionada por el archivo web.config, consulte los artículos en Hospedaje de ASP.NET Core en Windows con IIS.
Hospedaje en una granja de servidores web
Para más información sobre la configuración del hospedaje de aplicaciones de ASP.NET Core en un entorno de granja de servidores web (por ejemplo, para implementar varias instancias de la aplicación para escalabilidad), vea Hospedaje de ASP.NET Core en una granja de servidores web.
Host en Docker
Para más información, vea Hospedar ASP.NET Core en contenedores de Docker.