Я использую mef для создания веб-сервисов WCF.Вот как выглядит служба:
[Export]
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class MobileService
{
[Import]
public IEmailService EmailService { get; set; }
[Import]
public ILoggerService LoggerService { get; set; }
[Import]
public IContextManager ContextManager { get; set; }
Вот так выглядит код для извлечения экземпляра службы:
// Get Service instace via MEF
public object GetInstance(InstanceContext instanceContext, Message message)
{
var lazyInstance = Container.GetExports(ServiceType, null, null).FirstOrDefault();
var instance = lazyInstance.Value;
return instance;
}
MEF создает EmailService, LoggerService, и, если все в порядке, они живут счастливо, пока работает служба.
Теперь ContextManager - другое животное.В GetInstance - мне действительно нравится «убивать» его и заново создавать.ContextManager изучает URL и заголовки во время построения и заполняет «контекст».С таким кодом, как у меня - он создается впервые и никогда не уничтожается.Как изменить это поведение?
Спасибо!