Я только что обновил Automapper в своем проекте WCF Service до последней версии 8.0.0.Я получаю следующую ошибку при вызове службы через тестовый клиент WCF:
System.InvalidOperationException: 'Mapper уже инициализирован.Вы должны вызывать Initialize один раз для домена / процесса приложения. '
В старой версии Automapper 6.0.2 она работает и не выдает никаких исключений.Я инициализировал Mapper с отдельным классом поведения службы.
Класс обслуживания EdiPartners.cs :
[AutomapServiceBehavior]
[ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode =
InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class EdiPartners : IPartners
{
[FaultContract(typeof(ExceptionObject))]
public Supplier GetPartnerData(string SupplierNumber)
{
// Code
}
}
Класс поведения службы AutomapServiceBehavior :
public sealed class AutomapServiceBehavior : Attribute, IServiceBehavior
{
#region IServiceBehavior Members
public void AddBindingParameters(ServiceDescription serviceDescription,
ServiceHostBase serviceHostBase,
Collection<ServiceEndpoint> endpoints, BindingParameterCollection
bindingParameters)
{
AutomapBootstrap.InitializeMap();
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
#endregion
}
Статический класс инициализации Automapper AutomapBootstrap :
public class AutomapBootstrap
{
public static void InitializeMap()
{
Mapper.Initialize(config =>
{
config.CreateMap<Supplier, IEdiPartnerData>();
config.CreateMap<IEdiPartnerData, Supplier>();
config.CreateMap<IEdiPartner, EdiPartner>();
});
}
}
Может быть, вы, ребята, можете мне помочь.Я не понимаю, почему это работает со старой, но не с новой версией.Есть ли лучший способ инициализации Automapper в службе WCF?
Заранее спасибо, Сандро