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.

¿Por qué IHostBuilder no encuentra el método ConfigureWebHostDefaults trabajando con la plantilla de servicio de trabajador de Visual Studio?

Creé un proyecto .NET 5 de Visual Studio utilizando la plantilla Worker Service, que crea un archivo Program.cs que contiene la clase Program con el siguiente método:

public static IHostBuilder CreateHostBuilder(string[] args) =>
   Host.CreateDefaultBuilder(args)
   .ConfigureServices((hostContext, services) =>
   {
      services.AddHostedService<Worker>();
   });

Ya que quiero especificar una clase Startup para implementar comprobaciones de salud en esta aplicación (ya que se implementará en Kubernetes (estoy siguiendo este tutorial)), leí que existe el método de extensión ConfigureWebHostDefaults. Sin embargo, obtengo el siguiente error al intentar usarlo:

enter image description here

El código que me da el error es el siguiente (el que se esconde detrás del error en la captura de pantalla anterior):

.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); })

Esta respuesta parecía mostrar mi situación, pero el paquete de Microsoft.Extensions.Hosting.Abstractions no resuelve el problema. También intenté importar los paquetes de Microsoft.AspNetCore.Hosting y Microsoft.AspNetCore.Hosting, sin éxito. Ya estoy usando el paquete Microsoft.Extensions.Hosting.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error parece indicar que no se puede encontrar el método ConfigureWebHostDefaults en la clase GenericHostBuilderExtensions. Esto probablemente se debe a que los paquetes necesarios no han sido agregados al proyecto.

    Para utilizar el método ConfigureWebHostDefaults, es necesario agregar los paquetes Microsoft.AspNetCore.Hosting y Microsoft.Extensions.Hosting al proyecto. Puede hacer esto agregando las siguientes líneas al archivo .csproj:

    <itemgroup>
      <packagereference include="Microsoft.AspNetCore.Hosting" version="2.2.7"></packagereference>
      <packagereference include="Microsoft.Extensions.Hosting" version="5.0.0"></packagereference>
    </itemgroup>
    

    Reemplace las versiones con las últimas disponibles en el momento de la escritura.

    Después de agregar los paquetes, asegúrese de restaurarlos ejecutando dotnet restore en el directorio del proyecto.

    Una vez que se hayan agregado y restaurado los paquetes, el método ConfigureWebHostDefaults debería estar disponible y se puede usar para especificar una clase Startup:

    C#
    public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
    webBuilder.UseStartup<startup>();
    })
    .ConfigureServices((hostContext, services) =>
    {
    services.AddHostedService<worker>();
    });

    Tenga en cuenta que también es necesario crear una clase Startup y agregar las configuraciones necesarias, como las verificaciones de salud.

Comments are closed.