C# 映射程序未初始化。使用适当的配置调用Initialize

C# 映射程序未初始化。使用适当的配置调用Initialize,c#,asp.net-core,automapper,C#,Asp.net Core,Automapper,我在为netcore 2.1项目使用Automper时出错 映射程序未初始化。使用适当的配置调用Initialize。如果您试图通过容器或其他方式使用映射器实例,请确保没有任何对静态mapper.Map方法的调用,如果您使用的是ProjectTo或UseAsDataSource扩展方法,请确保传入相应的IConfigurationProvider实例。 AutoMapper.Mapper.get_配置在Mapper.cs的第23行 我已经配置好了 public class AutoMapper

我在为netcore 2.1项目使用Automper时出错

映射程序未初始化。使用适当的配置调用Initialize。如果您试图通过容器或其他方式使用映射器实例,请确保没有任何对静态mapper.Map方法的调用,如果您使用的是ProjectTo或UseAsDataSource扩展方法,请确保传入相应的IConfigurationProvider实例。 AutoMapper.Mapper.get_配置在Mapper.cs的第23行

我已经配置好了

 public class AutoMapperConfig
{
    public static MapperConfiguration RegisterMappings()
    {
        return new MapperConfiguration(cfg =>
        {
            cfg.AddProfile(new DomainToViewModelMappingProfile());
            cfg.AddProfile(new ViewModelToDomainMappingProfile());
        });
    }
}
文件DomainToViewModelMappingProfile.cs

public class DomainToViewModelMappingProfile : Profile{
      public DomainToViewModelMappingProfile(){
             CreateMap<Function, FunctionViewModel>();
             CreateMap<AppUser, AppUserViewModel>();
             CreateMap<AppRole, AppRoleViewModel>();
 }
}
文件Startup.cs

 services.AddSingleton(Mapper.Configuration);
        services.AddScoped<IMapper>(sp => new Mapper(sp.GetRequiredService<AutoMapper.IConfigurationProvider>(), sp.GetService));

有人能帮我吗?谢谢你

我建议您使用microsoft ioc的

在configureservice方法启动类中:

services.AddAutoMapper(typeof(Startup).Assembly);

您不需要手动配置配置文件,因为扩展将扫描您传递给它的给定程序集中的类型。

我建议您使用for microsoft ioc

在configureservice方法启动类中:

services.AddAutoMapper(typeof(Startup).Assembly);
您不需要手动配置配置文件,因为扩展将扫描给定程序集中的类型或您传递给它的程序集中的类型。

这对我很有效

解决方案 在Startup.cs中,可以通过替换

services.AddSingleton(Mapper.Configuration);

这对我有用

解决方案 在Startup.cs中,可以通过替换

services.AddSingleton(Mapper.Configuration);

您是否在正在进行的任何呼叫中使用.ProjectTo?如果是,请尝试在参数中添加配置:

IMapper _mapper; //Inject in constructor

_repository.GetAll().ProjectTo<YourProjection>(_mapper.ConfigurationProvider);
您是否在正在进行的任何呼叫中使用.ProjectTo?如果是,请尝试在参数中添加配置:

IMapper _mapper; //Inject in constructor

_repository.GetAll().ProjectTo<YourProjection>(_mapper.ConfigurationProvider);

检查此链接检查此链接正是我需要的。正是我需要的。