Unity - перехват для класса обслуживания WCF? - PullRequest
5 голосов
/ 22 ноября 2011

У меня есть клиент-серверное приложение, которое общается с помощью WCF. Чтобы добавить некоторую пользовательскую информацию о сеансе в каждый заголовок сообщения WCF, я обернул клиентский канал WCF в класс «ClientChannelProxy» и использовал расширение перехвата Unity для добавления моей пользовательской информации заголовка с использованием аспектов.

IUnityContainer container = new UnityContainer();
container.AddNewExtension<Interception>();
container.RegisterType<IClientService, ClientServiceProxy>();
container.Configure<Interception>().SetInterceptorFor<IClientService>(new
TransparentProxyInterceptor());

Это прекрасно работает для клиента, так как я могу легко настроить контейнер и перехват единства, используя код, показанный выше.

Но как настроить единство и перехват на стороне сервера? Моя служба WCF настроена в файле .SVC, у меня нет возможности настроить перехват и выполнение моих аспектов.

<%@ ServiceHost Language="C#" Debug="true" Service="Test.ClientService" %>
<!-- How to configure Unity Interception for this WCF-Service ? -->

Было бы неплохо, если бы кто-нибудь помог мне заставить его работать. Спасибо!

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Вам необходимо создать инспектор / перехватчик на стороне сервера. Вы можете обратиться к этому сообщению: Проверка параметров WCF с помощью перехватчика и http://msdn.microsoft.com/en-us/library/ms751495.aspx

2 голосов
/ 22 ноября 2011

Вы можете включить службу WCF с помощью DI, реализовав свой собственный InstanceProvider, ServiceHost и т. Д. С Unity. Таким образом, вы сможете подключить свой аспект.

Вот пример того, как этого можно достичь: http://initializecomponent.blogspot.com/2008/06/integrating-unity-with-wcf.html

...