如何在启动时在WCF中配置DI容器?

时间:2018-08-14 20:31:42

标签: c# .net wcf

我们将Simple Injector用作我们的DI容器,并使用其构造函数注入样式构建了许多共享库。

现在,我们有一个客户坚持认为,我们实现了一个可以调用的由IIS托管的SOAP Web服务,我们正在尝试使用WCF进行处理,并且遇到了问题。

主要问题是初始化期间各种程序集的可见性。

我已经看到了很多有关如何启动应用程序的建议。

  1. 使用静态AppInitialize()方法在App_Code中创建一个类。
  2. 添加Global.asax和Global.asax.cs,并使用Application_Start()方法。
  3. 向我的服务类添加静态Configure(ServiceConfiguration config)方法。

我有一个带有静态initialize()方法的静态SimpleInjectorConfig类,我试图从上面的任何一个尝试调用。在其中,我需要连接缓存:

container.Register<IObjectCache>(() => MemoryCache.Default);

如果将SimpleInjectorConfig放入App_Code中,则可以从AppInitialize()调用SimpleInjectorConfig.initialize(),但不能引用MemoryCache。

The type or namespace 'Cache' does not exist in the namespace 'System.Runtime'.

当然可以。如果我将SimpleInjectorConfig移到源代码树中的其他位置,它会毫无问题地引用System.Runtime.Cache,但无法从AppInitialize()引用SimpleInjectorConfig。

在global.asax.cs中使用Global.Application_Start()具有相同的问题。我无法访问SimpleInjectorConfig。

同上,用于向我的服务类添加Configure(ServiceConfiguration config)方法。如果这样做,将无法访问SimpleInjectorConfig。

我觉得我缺少有关WCF管理程序集引用的基本知识。我曾期望,由于我的服务类和SimpleInjectorConfig已被编译到同一程序集中,因此它们应该能够互相看到。与global.asax.cs同上。

我想念什么?

0 个答案:

没有答案