【发布时间】:2011-08-18 05:16:49
【问题描述】:
我正在使用 mef 创建 WCF Web 服务。这是服务的外观:
[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 和标头并填充“上下文”。使用像我这样的代码 - 它是第一次创建并且永远不会被破坏。如何改变这种行为?
谢谢!
【问题讨论】:
标签: wcf inversion-of-control mef