8

谁能帮忙?

我创建了一个 WCF 库(不是应用程序),我将在 SVC IIS 页面中托管它。

但我想在通用位置加载统一的东西......我可以将它加载到 global.asax 但然后它绑定到 IIS Asp.net 容器并且在执行 TDD 时这部分不会执行所以不是我的解决方案会工作。

WCF 库是一个纯类,所以我怀疑我可以使用 OnStartup 等任何事件吗?

我想到的唯一方法是让服务从基类继承以及调用某种静态类并为统一进行引导的接口。

我有点迷茫,这是唯一的方法还是有一些我不知道的方法。

基本上这个想法是......谁曾经调用过 wcf 库,那么统一注入需要发生......

有任何想法吗?

谢谢

4

3 回答 3

5

有几种方法可以解决这个问题。这是您的两个最佳选择:

您可以创建自定义 ServiceHost 并覆盖InitializeRuntime

您可以使用公共静态方法 AppInitialize 在您的 App_Code 目录中创建一个名为 ApplicationStart 的类(虽然它有点异味):

public static class ApplicationStart
{
    public static void AppInitialize()
    {
        // Initialise IoC container
    }
}

董文龙在他的博客上有其他方法

于 2009-10-08T13:18:24.837 回答
0

您可以使用 IInstanceProvider 通过 Unity 或其他 IOC 容器创建服务对象。查看博客文章以获取有关如何执行此操作的详细信息。

接下来,您可以使用实现为 Attribute 的 IContractBehavior,通过在 ApplyDispatchBehavior 方法中设置 InstanceProvider 将 IInstanceProvider 添加到 DispatchRuntime。

于 2009-10-08T13:02:53.417 回答
0

现在有一个名为Unity.WCF的开源 NuGet 包可以为您解决这个问题。

有关更多信息和源代码,请参见http://unitywcf.codeplex.com/

于 2012-01-20T10:06:04.927 回答