【问题标题】:Unity - Interception for a WCF service class?Unity - WCF服务类的拦截?
【发布时间】:2011-11-22 10:14:01
【问题描述】:

我有一个使用 WCF 进行通信的客户端和服务器应用程序。为了向每个 WCF 消息头添加一些自定义会话信息,我将客户端 WCF 通道包装到“ClientChannelProxy”类中,并使用 Unity Interception 扩展通过方面添加我的自定义头信息。

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 ? -->

如果有人可以帮助我让它工作,那就太好了。 谢谢!

【问题讨论】:

  • 您想在调用到达实际服务类之前添加一些处理程序吗?
  • 精确。在客户端上,我将一些主体信息添加到 WCF 消息头。服务器应在调用实际服务类之前读取此标头信息并构建自定义主体对象。
  • 我已经添加了一个关于这个的答案。

标签: c# wcf unity-container aop


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以在使用 Unity 实现您自己的 InstanceProvider、ServiceHost 等时使用 DI 启用 WCF 服务。这样你就可以插入你的方面了。

    这是一个如何实现的示例:http://initializecomponent.blogspot.com/2008/06/integrating-unity-with-wcf.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      相关资源
      最近更新 更多