MediatR在IIS上找不到处理程序

时间:2019-11-19 08:15:55

标签: c# asp.net .net-core mediatr

我正在.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中的示例   例如。

2 个答案:

答案 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)

经过大量搜索之后,问题似乎不是处理程序的注册(正确),而是问题在我的处理程序中注入了存储库。解决此问题后,一切按预期进行