none
WCF服务端扩展拦截的问题 RRS feed

  • 问题

  •        WCF是通过负载均衡请求过来的,在发布版本的时候,存在客户端和服务端的契约不一致(比如客户端调用的是新方法,服务端漏发了包含新方法的dll)的问题。此时错误:由于  ContractFilter 在 EndpointDispatcher 不匹配。

           为了定位哪台服务器,想在服务端收到客户端请求的时候,在验证客户端调用的方法和服务端的方法是否匹配的时候,进行拦截,记录服务器地址。不清楚  "由于  ContractFilter 在 EndpointDispatcher 不匹配 "这步操作是在哪步操作完成的或者哪个类方法中处理的。请指点!

           


    2012年10月25日 10:55

答案

  •        WCF是通过负载均衡请求过来的,在发布版本的时候,存在客户端和服务端的契约不一致(比如客户端调用的是新方法,服务端漏发了包含新方法的dll)的问题。此时错误:由于  ContractFilter 在 EndpointDispatcher 不匹配。

           为了定位哪台服务器,想在服务端收到客户端请求的时候,在验证客户端调用的方法和服务端的方法是否匹配的时候,进行拦截,记录服务器地址。不清楚  "由于  ContractFilter 在 EndpointDispatcher 不匹配 "这步操作是在哪步操作完成的或者哪个类方法中处理的。请指点!

           


    我感觉你这个需求有点诡异。你想记录服务器地址,这个记录日志简单啊,拦截也简单,在部署WCF服务的服务器上,DLL加上日志功能,消息拦截,你可以比对一下进来请求的Action和你服务现有的Action有匹配没有。这个异常实际也是在实例化的时候判断的


    Frank Xu Lei--谦卑若愚,好学若饥
    [老徐的网站]:http://www.frankxulei.com/

    [老徐的博客]:http://54peixun.com/Author/frankxulei
    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2012年10月26日 8:32
    版主

全部回复

  • 既然做负载均衡,肯定每台服务器的DLL都必须一样吧。

    你把所有服务器的DLL都部署一样。然后再检查


    http://blog.csdn.net/zx13525079024

    2012年10月26日 1:51
  • 主要是为了记录日志,方便运维排查问题。
    2012年10月26日 2:18
  •        WCF是通过负载均衡请求过来的,在发布版本的时候,存在客户端和服务端的契约不一致(比如客户端调用的是新方法,服务端漏发了包含新方法的dll)的问题。此时错误:由于  ContractFilter 在 EndpointDispatcher 不匹配。

           为了定位哪台服务器,想在服务端收到客户端请求的时候,在验证客户端调用的方法和服务端的方法是否匹配的时候,进行拦截,记录服务器地址。不清楚  "由于  ContractFilter 在 EndpointDispatcher 不匹配 "这步操作是在哪步操作完成的或者哪个类方法中处理的。请指点!

           


    我感觉你这个需求有点诡异。你想记录服务器地址,这个记录日志简单啊,拦截也简单,在部署WCF服务的服务器上,DLL加上日志功能,消息拦截,你可以比对一下进来请求的Action和你服务现有的Action有匹配没有。这个异常实际也是在实例化的时候判断的


    Frank Xu Lei--谦卑若愚,好学若饥
    [老徐的网站]:http://www.frankxulei.com/

    [老徐的博客]:http://54peixun.com/Author/frankxulei
    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2012年10月26日 8:32
    版主