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

.NET 6出现AutoMapperMappingException:缺少类型映射配置或不支持映射

排查AutoMapper映射异常步骤

以下是针对你遇到的映射问题的排查及解决方案:

1. 核心问题:AutoMapper配置未被正确加载

你的Program.cs中使用了builder.Services.AddAutoMapper(typeof(IStartup)),但在.NET 6默认模板中不存在IStartup接口,且你的AutoMapperClass(继承Profile的配置类)并未被AutoMapper扫描到,导致映射规则未注册,最终触发映射异常。

修复方案:修正AutoMapper注册代码

将Program.cs中的注册代码替换为以下任意一种:

  • 直接指定配置类的类型(推荐):
builder.Services.AddAutoMapper(typeof(AutoMapperClass));
  • 扫描当前程序集内所有Profile实现:
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());

2. 验证映射配置是否生效

可以在控制器的Get方法中添加调试代码,确认映射规则已被加载:

public async Task<ActionResult<List<GenresDTO>>> Get() 
{
    // 调试:检查是否存在Genres到GenresDTO的映射
    var typeMap = mapper.ConfigurationProvider.FindTypeMapFor<Genres, GenresDTO>();
    if (typeMap == null)
    {
        throw new InvalidOperationException("未找到Genres到GenresDTO的映射配置");
    }

    var genres = await dbContext.Genres.ToListAsync();
    return mapper.Map<List<GenresDTO>>(genres);
}

如果抛出上述异常,说明配置仍未被加载,需检查:

  • AutoMapperClass是否被正确标记为public类
  • AutoMapperClass所在的程序集是否被项目引用
  • 确认AutoMapper NuGet包版本兼容.NET 6(建议使用AutoMapper 12.x及以上版本)

3. 额外检查点

  • 确保Genres实体的Name属性不会为null(如果数据库允许null,映射时不会触发异常,但可能不符合业务逻辑)
  • 你的CreateMap<GenresDTO, Genres>().ReverseMap()已经正确生成了Genres到GenresDTO的反向映射规则,只要配置被加载就会生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:40:31