Unity не перехватывает вызовы службы WCF - PullRequest
2 голосов
/ 01 ноября 2011

У меня есть служба 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());

но перехватывающий код по-прежнему не вызывается при каждом вызове метода. что мне не хватает?

1 Ответ

1 голос
/ 02 ноября 2011

Установите перехватчик на реализацию вместо отображаемого интерфейса. Попробуйте:

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