You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 8.0调用MediatR出现IRequestHandler未注册异常问题

解决MediatR未注册IRequestHandler的问题

你的问题核心是MediatR只扫描了Web API项目的程序集,没包含存放领域逻辑的类库程序集,导致请求对应的处理程序没被注册到DI容器中。以下是具体解决步骤:

1. 修改MediatR注册代码,同时包含类库程序集

当前代码仅注册了Web API项目(Program所在程序集)的服务,需要补充类库程序集的扫描。可以通过类库中任意一个请求类或处理程序类来获取其所在程序集:

builder.Services.AddMediatR(cfg => 
{
    // 注册Web API项目的MediatR服务
    cfg.RegisterServicesFromAssembly(typeof(Program).Assembly);
    // 注册领域类库的MediatR服务,替换为你类库中实际存在的类型
    cfg.RegisterServicesFromAssembly(typeof(YourLibraryNamespace.YourDomainRequest).Assembly);
});

2. 确认类库中的代码符合MediatR规范

  • 请求类必须实现IRequest<TResponse>(带返回值)或IRequest(无返回值)接口
  • 处理程序类必须实现对应的IRequestHandler<TRequest, TResponse>或IRequestHandler<TRequest>接口,且为公共类
    示例代码(类库中):
// 请求类
public class DomainQuery : IRequest<DomainResult>
{
    public int EntityId { get; set; }
}

// 处理程序类
public class DomainQueryHandler : IRequestHandler<DomainQuery, DomainResult>
{
    public Task<DomainResult> Handle(DomainQuery request, CancellationToken cancellationToken)
    {
        // 业务逻辑实现
        return Task.FromResult(new DomainResult { Id = request.EntityId });
    }
}

public class DomainResult
{
    public int Id { get; set; }
}

3. 验证基础配置

  • 确保领域类库已正确引用到Web API项目中
  • 确认类库和Web API项目使用的MediatR包版本一致,避免版本兼容问题

内容的提问来源于stack exchange,提问作者Woodman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:22:02