Multiple AutoMapper.Configure () dans Global.asax

Je suis en utilisant AutoMapper à la carte entre DTO objets et de mon business objects. J'ai deux AutoMapperConfiguration.fichiers cs - dans ma couche de service et un autre dans mon api web de la couche.

Comme indiqué dans la réponse sur le lien suivant
Où placer AutoMapper.CreateMaps?

Je suis l'appel de la fonction Configure() de ces deux fichiers dans mon Global.asax classe

AutoMapperWebConfiguration.Configure();
AutoMapperServiceConfiguration.Configure();

mais il semble que mon Service Configurer l'appel (l'appel de la deuxième) est d'écraser les mappages de l'api web de la couche (le premier appel) et j'obtiens une exception en disant: la Cartographie est manquant.

Si j'inverse le Configurer des appels à ressembler à ce

AutoMapperServiceConfiguration.Configure();
AutoMapperWebConfiguration.Configure();

Je n'ai pas l'exception pour le web api de cartographie, mais j'obtiens le même mappage exception de la couche de Service.

Je fais quelque chose de mal parce que c'est clairement marqué comme réponse ci-dessus débordement de pile lien?

Voici mon code:

public static class AutoMapperServiceConfiguration
{
public static void Configure()
{
Mapper.Initialize(x =>
{
x.AddProfile<CmciFlowTestToGenericFlowTestSimpleMappingProfile>();
x.AddProfile<FsrsFlowTestToGenericFlowTestSimpleMappingProfile>();
});
}
}
public class FsrsFlowTestToGenericFlowTestSimpleMappingProfile : Profile
{
protected override void Configure()
{
Mapper.CreateMap<FsrsFlowTest, GenericFlowTest>()
.ConvertUsing<FsrsFlowTestToGenericFlowTestSimpleConverter>();
}
}
public class FsrsFlowTestToGenericFlowTestSimpleConverter : TypeConverter<FsrsFlowTest, GenericFlowTest>
{
protected override GenericFlowTest ConvertCore(FsrsFlowTest source)
{
if (source == null)
{
return null;
}
return new GenericFlowTest
{
FlowTestDate = source.FlowTestDates,
StaticPsi = source.HydrantStaticPsi.ToString(),
ResidualPsi = source.HydrantResidualPsi.ToString(),
TotalFlow = source.NffGallonsPerMinute.ToString(),
FlowTestLocation = source.FsrsFlowTestLocations.Any()
? source.FsrsFlowTestLocations.First().LocationDescription
: null
};
}
public class CmciFlowTestToGenericFlowTestSimpleMappingProfile : Profile
{
protected override void Configure()
{
Mapper.CreateMap<CmciFlowTest, GenericFlowTest>()
.ConvertUsing<CmciFlowTestToGenericFlowTestSimpleConverter>();
}
}
public class CmciFlowTestToGenericFlowTestSimpleConverter : TypeConverter<CmciFlowTest, GenericFlowTest>
{
protected override GenericFlowTest ConvertCore(CmciFlowTest source)
{
if (source == null)
{
return null;
}
return new GenericFlowTest
{
FlowTestDate = source.FlowTestDates,
StaticPsi = source.HydrantStaticPsi.ToString(),
ResidualPsi = source.HydrantResidualPsi.ToString(),
TotalFlow = source.CalculatedHydrantGallonsPerMinute.ToString(),
FlowTestLocation = source.StaticLocationHydrantFlowPSI
};
}
}    
public static class AutoMapperWebConfiguration
{
public static void Configure()
{
Mapper.Initialize(x =>
{
x.AddProfile<ServiceToWebApiMappingProfile>();
x.AddProfile<WebApiToServiceMappingProfile>();
});
}
}
public class ServiceToWebApiMappingProfile : Profile
{
protected override void Configure()
{
Mapper.CreateMap<ServiceFlowTest, FlowTest>();
}
}
public class WebApiToServiceMappingProfile : Profile
{
protected override void Configure()
{
Mapper.CreateMap<PropertyAddress, ServicePropertyAddress>();
}
}

Pour contourner ce problème, je suis en ajoutant les profils de service dans le AutoMapperWebConfiguration classe et en n'appelant AutoMapperWebConfiguration.Configurer ().asax.

source d'informationauteur manu79