Unity不拦截WCF服务调用

本文关键字:服务 调用 WCF Unity | 更新日期: 2023-09-27 18:13:27

我有一个WCF服务,我想拦截方法CreateOrder每当它被调用:

[ServiceContract]
public interface IOrderService
{
    [OperationContract]
    [CreateOrderCallHandlerAttribute]
    void CreateOrder(string orderXML);
}
public class OrderService : IOrderService
{
    public void CreateOrder(string orderXML)
    {
        // ...
    }    
}

CreateOrderCallHandlerAttribute继承自ICallHandler。

所以,我使用了这篇文章中描述的方法:http://weblogs.asp.net/fabio/archive/2009/03/24/inversion-of-control-with-wcf-and-unity.aspx

我使用配置文件为服务依赖的类型配置依赖注入。一旦unity容器在加载配置文件后返回,我就向其添加以下代码:

        UnityConfigurationSection configuration = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
        configuration.Containers.Default.Configure(Container);
        Container.AddNewExtension<Interception>();
        Container.Configure<Interception>().SetInterceptorFor<IOrderService>(new TransparentProxyInterceptor());

,但是无论何时调用该方法,仍然不会调用拦截代码。

Unity不拦截WCF服务调用

在实现上而不是被映射的接口上设置拦截器。试一试:

Container.Configure<Interception>().SetInterceptorFor<OrderService>(new TransparentProxyInterceptor());