【发布时间】:2017-02-27 14:53:49
【问题描述】:
到目前为止,我们已将 SimpleInjector.Integration.Wcf 中的 SimpleInjectorServiceHostFactory 用于我们的 WCF 服务。 当我们将接口作为 SimpleInjector 应该解析的参数时,这使我们能够避免典型的“未定义无参数构造函数”。
在 global.asax 中:
var container = new Container();
container.Options.DefaultScopedLifestyle = new WcfOperationLifestyle();
container.Register<IOurBusinessService, OurBusinessService>();
container.Verify();
SimpleInjectorServiceHostFactory.SetContainer(container);
要配置/注册 AutoMapper,我们会调用一些代码在 Global.asax 中注册它,如下所示:
var cfg = new MapperConfigurationExpression();
cfg.CreateMap<SomeObject, SomeObjectDTO>();
Mapper.Initialize(cfg);
Mapper.Configuration.AssertConfigurationIsValid();
然而,当我们的 Web 服务直接使用 net.tcp 端点调用时,有时似乎不再注册 AutoMapper。这似乎是因为当直接请求 WCF 服务时,Application_Start 中的 Global.asax 中的代码永远不会执行。
我们目前尝试从 ServiceHostFactory 派生并在我们重写的 CreateServiceHost 方法中注册 AutoMapper 和 SimpleInjector。 然而,这确实再次给了我们“未定义无参数构造函数”错误。
您有任何解决方案或最佳做法吗?
【问题讨论】:
标签: c# wcf automapper simple-injector