J'utilise ASP.NET CORE 2.2 et MEDIATR Framework/Bibliothèque pour des objets de requête. Quand je gère le programme, je suis confronté à cette exception:
InvalidOperationException: le gestionnaire n'a pas été trouvé pour la demande de type MediaTr.IndreQuestHandler
2[Store.Core.Queries.GetProductTypesQuery,System.Collections.Generic.IEnumerable
1 [store.core.domainmodels.productType]]]. Enregistrez vos gestionnaires avec le conteneur.
J'ai ajouté ces emballages à mon projet de magasin (projet principal)
1- MediaTR 7.0.0
2- mediatr.extensions.microsoft.dependencySinjection
Ceci est mon startup.cs
services.AddMediatR(typeof(Startup));
Donc, c'est ma requête (situé dans un projet appelé "Store.core")
namespace Store.Core.Queries.Products
{
public class GetProductTypesQuery : IRequest<IEnumerable<ProductType>> { }
}
Ceci est mon Queryhandler (situé dans un autre projet appelé "store.data")
namespace Data.Queries.Products
{
public class GetProductTypesQueryHandler : IRequestHandler<GetProductTypesQuery, IEnumerable<ProductType>>
{
private ApplicationDbContext _context;
public GetProductTypesQueryHandler(ApplicationDbContext context)
{
_context = context;
}
public async Task<IEnumerable<ProductType>> Handle(GetProductTypesQuery request, CancellationToken cancellationToken)
{
return await _context.ProductType.OrderBy(p => p.ProductTypeID).ToListAsync();
}
}
}
C'est le contrôleur que j'ai utilisé le MediaTR
namespace Store.Controllers
{
public class HomeController : Controller
{
private readonly IMapper _mapper;
private readonly IMediator _mediator;
public HomeController(IMapper mapper, IMediator mediator)
{
_mapper = mapper;
_mediator = mediator;
}
public IActionResult Home() => View();
[HttpGet]
public async Task<IActionResult> Dishes(GetProductTypesQuery query) {
var productTypes = await _mediator.Send(query);
var productTypesViewModel = _mapper.Map<IEnumerable<ProductTypeVM>>(productTypes);
return View(productTypesViewModel);
}
}
}
mon modèle produit modèle (je pense que ce n'est pas nécessaire mais je l'ai ajouté afin de fournir des informations complètes)
namespace Store.Core.DomainModels
{
public class ProductType
{
public int ProductID { get; set; }
public string ProductName { get; set; }
}
}
La seule partie qui est paisible pour moi est la startup.cs (parce que j'ai des requêtes et des manipulateurs de questions dans différents projets), mais je ne sais pas ce qui me manque.
Assurez-vous que votre gestionnaire est public.