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.

Pruebas de integración Falló la migración de .NET 5 a 6 en los Comandos de Mediatr.

Estoy migrando una aplicación de .NET 5 a .NET 6, incluyendo las pruebas de integración.

Mientras ejecutaba el siguiente comando como parte de las pruebas de integración, se produjo un error:

  // Arrange
  await _mediatr.Send(new MyCommand());

Error al construir el controlador para la solicitud del tipo MediatR.IRequestHandler`2[MyCommand]. Registre sus controladores con el contenedor. Consulte los ejemplos en GitHub para obtener ejemplos.

Eliminé la clase de inicio (startup class) de la API y utilicé solo program.cs.

¿Qué salió mal en mi caso?

Agregando la excepción interna también:

No se puede resolver ‘MediatR.IRequestHandler`2[Mycommand]’ desde el proveedor raíz porque requiere el servicio de ámbito ‘Domain.MyDbContext’.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el manejador de MediatR para la solicitud “MyCommand” no ha sido registrado en el contenedor IoC. Además, la excepción interna señala el hecho de que el manejador requiere un servicio de ámbito, que en este caso es “Domain.MyDbContext”.

    Es probable que la falta de registro y servicio de ámbito esté relacionada con la eliminación de la clase de inicio desde la API y solo se utilice program.cs. La clase de inicio normalmente contiene la configuración y registro de servicios para la aplicación, incluyendo el registro de manejadores de MediatR y servicios de ámbito.

    Para solucionar el problema, es posible que deba registrar manualmente los servicios y dependencias faltantes en program.cs o crear una nueva clase de inicio para manejar la configuración y registro de servicios.

Comments are closed.