2

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

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

我的问题是 -
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;
        }

谢谢

4

1 回答 1

0

好的,想通了-
我的问题是在我的服务类被实例化之后IParameterInspector被调用。所以显然那不是进行初始化的地方。

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

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

于 2012-08-25T11:43:38.073 回答