Unity - WCF服务类的拦截?

时间:2011-11-22 10:14:01

标签: c# wcf unity-container aop

我有一个客户&使用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 个答案:

答案 0 :(得分:2)

您可以使用DI在使用Unity实现自己的InstanceProvider,ServiceHost等时启用WCF服务。所以你将能够插入你的方面。

以下是如何实现这一目标的例子:http://initializecomponent.blogspot.com/2008/06/integrating-unity-with-wcf.html

答案 1 :(得分:2)

您需要在服务器端创建一个检查器/拦截器。您可以参考以下帖子:WCF Parameter Validation with Interceptorhttp://msdn.microsoft.com/en-us/library/ms751495.aspx

相关问题