Este tutorial explica cómo configurar una aplicación ASP.NET Core en modo OutOfProcess para que varias aplicaciones puedan funcionar al mismo tiempo dentro de su plan de Hosting Windows.
¿Cuándo necesita este cambio?
Las aplicaciones ASP.NET Core (.NET Core, .NET 5, 6, 8 o superior) pueden ejecutarse en IIS de dos formas:
- InProcess (valor por defecto): la aplicación corre dentro del pool de aplicaciones de IIS. Es un poco más rápido, pero solo admite una aplicación ASP.NET Core por pool.
- OutOfProcess: IIS inicia la aplicación en un proceso propio y le entrega las visitas. Varias aplicaciones pueden compartir el mismo pool sin interferir entre ellas.
Si su plan tiene más aplicaciones ASP.NET Core (en el dominio principal, dominios adicionales o subdominios) que pools de aplicación disponibles, verá uno de estos errores en algunas de ellas:
- HTTP Error 500.35 - ASP.NET Core does not support multiple apps in the same app pool
- HTTP Error 500.34 - ASP.NET Core does not support mixing hosting models
Un síntoma típico es que las aplicaciones "se turnan": después de un reinicio funciona una y fallan las demás, y en otro momento funciona otra.
Importante antes de empezar
- Todas las aplicaciones ASP.NET Core que comparten un mismo pool deben usar el mismo modo. Si una queda en InProcess y otra en OutOfProcess, aparece el error 500.34.
- Si tiene una sola aplicación ASP.NET Core en el pool, no necesita cambiar nada: déjela en InProcess.
- Este cambio no aplica a sitios ASP.NET clásicos (.NET Framework 4.x, WebForms o MVC 5), que no tienen esta limitación.
Opción 1 (recomendada): configurarlo en el proyecto
Así el cambio se mantiene cada vez que publique una nueva versión de su aplicación.
1. Abra el archivo de proyecto .csproj de su aplicación en Visual Studio o en su editor.
2. Dentro de la sección PropertyGroup agregue la siguiente línea:
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
Por ejemplo:
<PropertyGroup> <TargetFramework>net8.0</TargetFramework> <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel> </PropertyGroup>
3. Vuelva a publicar la aplicación en su hosting (Web Deploy, FTP o el método que utilice). El archivo web.config generado ya incluirá el modo OutOfProcess.
4. Repita el procedimiento con cada aplicación ASP.NET Core del mismo pool.
Opción 2: editar el web.config directamente en Plesk
Úsela si necesita aplicar el cambio de inmediato. Tenga presente que, si después publica la aplicación sin la Opción 1, el web.config puede volver a InProcess.
1. Ingrese a Plesk y vaya a Sitios web y dominios (Websites & Domains).
2. En el dominio o subdominio de la aplicación, haga clic en Administrador de archivos (File Manager).
3. Ubique el archivo web.config en la carpeta raíz de la aplicación, haga clic sobre él y seleccione Editar en editor de texto (Edit in Text Editor).
4. Busque la línea que comienza con <aspNetCore y cambie el valor de hostingModel:
Antes:
<aspNetCore processPath="dotnet" arguments=".\MiAplicacion.dll" stdoutLogEnabled="false" hostingModel="inprocess" />
Después:
<aspNetCore processPath="dotnet" arguments=".\MiAplicacion.dll" stdoutLogEnabled="false" hostingModel="outofprocess" />
Si la línea no tiene el atributo hostingModel, agréguelo tal como aparece en el ejemplo. Si su aplicación usa un archivo .exe en processPath, deje ese valor igual y cambie solo hostingModel.
5. Haga clic en Guardar (Save). La aplicación se reinicia automáticamente al guardar el web.config.
6. Repita los pasos con cada aplicación ASP.NET Core que comparte el pool.
Verificar el cambio
Abra en su navegador cada una de las aplicaciones. Todas deberían responder normalmente, sin los errores 500.34 ni 500.35. La primera visita después del cambio puede tardar unos segundos más, mientras la aplicación se inicia.
Diferencias a considerar
- Rendimiento: OutOfProcess es levemente más lento que InProcess. En la mayoría de los sitios la diferencia no se nota.
- Memoria: cada aplicación corre en su propio proceso mientras recibe visitas, y se detiene sola cuando está inactiva.
- Compatibilidad: casi todas las aplicaciones funcionan igual. Si su aplicación depende de funciones exclusivas de InProcess, conviene dejarla sola en su propio pool.
Si tiene dudas o prefiere que nuestro equipo revise la configuración de sus aplicaciones, abra un ticket de soporte desde su Área de Clientes y lo ayudaremos.