我正在.NET Core 3.0中编写一个具有不同层的简单应用程序,并使用MediatR使代码干净。 我有5个不同的层:API,应用程序,Application.IO,域和基础结构,其中我的IRequestHandler在应用程序中,而我的IRequest在Application.IO中,并在API层的Startup类中注册我的处理程序。
在本地运行时,我没有任何问题,但是当我将其部署到IIS服务器时,我总是收到错误消息:
为类型的请求构造处理程序时出错 MediatR.IRequestHandler`2 [WerfRegistratie.Application.IO.Queries.GetPersonQuery,WerfRegistratie.Application.IO.Queries.GetPersonQueryResponse]。 在容器中注册您的处理程序。查看GitHub中的示例 例如。
答案 0 :(得分:0)
要注册Mediatr,您可以使用:
services.AddMediatR(typeof(Startup);
要注册您的处理程序,您可以使用:
services.AddMediatorHandlers(typeof(CreatePersonCommandHandler).GetTypeInfo().Assembly);
两者都应存在于您的configure.s方法的startup.cs文件中
public void ConfigureServices(IServiceCollection services){
services.AddMediatR(typeof(Startup);
services.AddMediatorHandlers(typeof(CreatePersonCommandHandler).GetTypeInfo().Assembly);
}
答案 1 :(得分:0)
经过大量搜索之后,问题似乎不是处理程序的注册(正确),而是问题在我的处理程序中注入了存储库。解决此问题后,一切按预期进行