IoC使用autofac和WCF IParameterInspector

时间:2012-08-21 07:26:08

标签: wcf autofac

我正在尝试在以下场景中使用autofac:
一种WCF服务,在每次方法调用时,都会接收用于打开数据库连接的连接详细信息 (即public UserDTO GetUser(string dbUsername, string dbPassword, int userId)

由于打开数据库连接对所有方法都是通用的,我想使用IParameterInspector来拦截每个方法调用,提取连接细节,并初始化连接。

我的问题是 - 1.我不知道是否(以及如何)将必要的工厂注入我的IParameterInspector 2.一旦我创建了连接,我不确定如何将其注册到我的容器中,以便该请求的所有组件都可以使用它。

到目前为止

我的IParameterInspector

        public object BeforeCall(string operationName, object[] inputs)
        {

            var userName = inputs[0] as Guid?;
            var password = inputs[1] as string;

            // How do I inject the ConnectionsFactory?
            var connection = ConnectionsFactory.CreateConnection(userName, password); 
           // How can I register my connection in the container, so that it'll be available to all dependencies created in this call?
            return null;
        }

感谢

1 个答案:

答案 0 :(得分:0)

好的,想通了 - 我的问题是在我的服务类实例化之后调用了IParameterInspector。很明显,这不是初始化的地方。

实现IInstanceCreator被证明是正确的做法,因为它在创建服务类之前调用​​,并且实际上用于告诉WCF如何创建服务类。

我刚刚创建了一个autofac Lifetime Scope ,并使用它注册了我的数据库连接。