es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Modelo de alojamiento mínimo: Salió del programa. Main con código de salida = ‘0’

Después de migrar una aplicación ASP.NET Core 6 del modelo heredado Program/Startup al uso del nuevo modelo de hospedaje minimalista, estoy recibiendo un conjunto de errores poco descriptivos.

Mensajes de error

He habilitado explícitamente UseDeveloperExceptionPage() para estar seguro, pero todo lo que recibo en el navegador es el genérico:

HTTP Error 500.30 – Fallo en el inicio de la aplicación ASP.NET Core

En el Visor de eventos, se registra el Evento 1011:

La aplicación ‘/LM/W3SVC/2/ROOT’ con la raíz física ‘C:\Code\’ ha salido de Program.Main con código de salida ‘0’. Por favor, comprueba los registros de stderr para obtener más información.

A continuación, el Evento 1007:

La aplicación ‘/LM/W3SVC/2/ROOT’ con la raíz física ‘C:\Code\’ no ha podido cargar coreclr.

Mensaje de excepción:
Hilo de trabajador de CLR ha salido prematuramente.

No hay más información disponible en la consola de depuración al ejecutar IIS Express o Kestrel. Sin embargo, puedo ver otros procesos iniciales de mi Program que se registran, por lo que sé que se están cargando correctamente.

Código

Esta es una versión simplificada de mi archivo Program, con componentes personalizados eliminados:

using Microsoft.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc.ViewComponents;</p>

<p>var builder = WebApplication.CreateBuilder(args);</p>

<p>builder.Services.AddControllersWithViews();</p>

<p>var app = builder.Build();</p>

<p>// Debería ser implícito en modo de depuración, pero se incluye explícitamente para estar seguro
app.UseDeveloperExceptionPage();</p>

<p>app.UseStaticFiles();
app.UseRouting();</p>

<p>app.MapControllers();

Hilos anteriores

Como estos errores son realmente generales, hay bastantes hilos anteriores disponibles relacionados con este problema, pero ninguno parece aplicarse a este caso. (Muchos tienen que ver con el paquete de hospedaje de ASP.NET Core, que no estoy utilizando.)

Pregunta

¿Existen causas comunes para este problema? Alternativamente, ¿hay otros enfoques para depurar este escenario?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Cuando se migra al nuevo modelo de alojamiento mínimo con ASP.NET Core 6, hay algunas causas comunes para recibir mensajes de error no descriptivos como los que estás experimentando. Aquí tienes algunas sugerencias sobre cómo abordar la depuración de este escenario:

    1. Verificar la versión del tiempo de ejecución de .NET

    Asegúrate de que la versión del tiempo de ejecución de .NET instalada en la máquina coincida con la versión especificada en el archivo de proyecto. Por ejemplo, si estás apuntando a .NET 6.0, verifica que el tiempo de ejecución de .NET 6.0 esté instalado en la máquina. Esto se puede encontrar en la página de descarga del SDK de Microsoft .NET Core.

    2. Verificar las dependencias del proyecto

    Asegúrate de que todas las dependencias necesarias estén referenciadas por tu proyecto. El nuevo modelo de alojamiento mínimo requiere un conjunto mínimo de dependencias para que tu aplicación funcione. Si falta alguna dependencia, es posible que recibas mensajes de error no descriptivos.

    3. Verificar otros archivos de configuración

    Asegúrate de que otros archivos de configuración en tu proyecto, como appsettings.json, estén configurados correctamente para funcionar bajo el nuevo modelo de alojamiento mínimo. Debido a que el nuevo modelo de alojamiento es relativamente nuevo, puede haber errores en los archivos de configuración que hagan que tu aplicación falle.

    4. Verificar los registros de stderr

    Asegúrate de revisar los registros de stderr, como se sugiere en el Visor de eventos. Esto debería proporcionar más información sobre por qué coreclr no pudo cargarse y puede ayudarte a aislar el problema.

    5. Verificar la configuración de IIS

    Si estás utilizando IIS para alojar tu aplicación, asegúrate de que la configuración de IIS esté correctamente configurada para el nuevo modelo de alojamiento mínimo. Verifica que la configuración del grupo de aplicaciones se haya configurado correctamente para usar la versión correcta de .NET y que se hayan tenido en cuenta cualquier cambio en las variables de entorno o en los puertos de red de la aplicación.

    6. Utilizar el método WaitForDebugger

    Si aún tienes problemas, puedes utilizar el método WaitForDebugger para pausar el inicio de la aplicación y adjuntar un depurador a ella. Esto puede ayudarte a aislar problemas en el código de inicio.

    using Microsoft.AspNetCore.Mvc.Controllers;
    using Microsoft.AspNetCore.Mvc.ViewComponents;
    
    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddControllersWithViews();
    
    var app = builder.Build();
    
    // Pausar el inicio de la aplicación y esperar a que se adjunte un depurador
    System.Diagnostics.Debugger.Launch();
    
    // Debería ser implícito en el modo de depuración, pero se incluye explícitamente para mayor seguridad
    app.UseDeveloperExceptionPage();
    
    app.UseStaticFiles();
    app.UseRouting();
    
    app.MapControllers();
    

    Aquí, el inicio de la aplicación se pausará y se te pedirá que adjuntes un depurador. Una vez adjuntado el depurador, puedes ejecutar el código paso a paso y aislar cualquier problema que encuentres.

    Siguiendo estos pasos, deberías poder aislar los problemas que estás experimentando y ver mensajes de error más específicos que te ayudarán a resolver el problema.

Comments are closed.