У меня есть многопользовательское веб-приложение, которое имеет несколько модулей. Я использую autofac как IOC и Automapper для сопоставления модели и объектов. В следующем коде я могу добавить профиль UserAuthenticationMapper в automapper, но не смог добавить профиль CustomerDataMapper. Autofac добавляет только один профиль карты к автопарпуру MappingEngine и игнорирует остальную часть. Что я здесь делаю?Невозможно зарегистрировать и добавить профиль automapper в Autofac
Вот мой UserAuthentication Модуль:
public class UserAuthenticationModule: Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<MappingEngine>().As<IMappingEngine>();
builder.Register(ctx =>
{
var configStore = new ConfigurationStore
(new TypeMapFactory(), MapperRegistry.AllMappers());
configStore.AddProfile<UserAuthenticationMapperProfile>();
return configStore;
})
.AsImplementedInterfaces()
.SingleInstance();
var assembly = Assembly.GetExecutingAssembly();
builder.RegisterAssemblyTypes(assembly)
.Where(t => t.Name.EndsWith("Service"))
.AsImplementedInterfaces()
.SingleInstance();
}
}
CustomerData Modue:
public class CustomerDataModule : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<CustomerDataService>()
.As<ICustomerDataService>()
.InstancePerDependency();
builder.RegisterType<MappingEngine>().As<IMappingEngine>();
builder.Register(ctx =>
{
var configStore = new ConfigurationStore
(new TypeMapFactory(), MapperRegistry.AllMappers());
configStore.AddProfile<CustomerDataMapperProfile>();
return configStore;
})
.AsImplementedInterfaces()
.SingleInstance();
}
}
здесь некоторые дополнительный код, чтобы показать, как я загрузке этих модулей в Global.asax
static IContainerProvider _containerProvider;
public IContainerProvider ContainerProvider
{
get { return _containerProvider; }
}
void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}"
);
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
var builder = new ContainerBuilder();
builder.RegisterModule<UserAuthenticationModule>();
builder.RegisterModule<CustomerDataModule>();
_containerProvider = new ContainerProvider(builder.Build());
}
Ошибка:
Исключение типа «AutoMapper.AutoMapperMappingException» произошло в AutoMapper.dll, но не было обработано в коде пользователя Отсутствует конфигурация карты типа или неподдерживаемое отображение. \ R \ n \ r \ nМашины типов: \ r \ nUser -> UserModel
Можете ли вы показать нам, как вы регистрируете эти модули, как вы разрешаете ваше сопоставление (например, как вы проверяете загрузку одного профиля, а не другое) и сообщаете нам, видите ли вы какие-либо сообщения об ошибках? –
Я редактировал свой вопрос с дополнительной информацией и сообщением об ошибке. Я получаю эту ошибку для «CustomerDataMapperProfile». – rajcool111