我正在尝试测试以下场景:

  • 常见的 WSDL
  • 基于 WSDL 实现对象并托管在 IIS 中的 WCF 端点。
  • 使用基于 WSDL 的代理来创建请求的客户端应用程序。

  • 当我从客户端向服务端点发出 Web 服务调用时,出现以下异常:



    我开始使用 MS Service Trace Viewer,但不确定在哪里查看。在查看客户端和端点中的类时,它们看起来是相同的。

    如何开始调试这个问题?

    此异常的一些可能原因是什么?

    最佳答案

    “EndpointDispatcher 处的契约(Contract)过滤器不匹配”意味着接收方无法处理消息,因为它不匹配接收方为接收消息的端点配置的任何契约(Contract)。

    这可能是因为:

  • 客户和发件人之间有不同的契约(Contract)。
  • 您在客户端和发件人之间使用了不同的绑定(bind)。
  • 客户端和发送方的消息安全设置不一致。

  • 有关该主题的更多信息,请查看 EndpointDispatcher 类。

    所以:

    确保您的客户端和服务器契约(Contract)匹配。
  • 如果您从 WSDL 生成客户端,WSDL 是否是最新的?
  • 如果您最近对契约(Contract)进行了更改,您是否部署了正确版本的客户端和服务器?
  • 如果您手工制作了客户端契约(Contract)类,请确保 namespace 、元素名称和操作名称与服务器预期的名称相匹配。

  • 检查客户端和服务器之间的绑定(bind)是否相同。
  • 如果您使用 .config 文件来管理端点,请确保绑定(bind)元素匹配。

  • 检查客户端和服务器之间的安全设置是否相同。
  • 如果您使用 .config 文件来管理端点,请确保安全元素匹配。
  • 关于wcf - EndpointDispatcher 异常中的 ContractFilter 不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5487791/

    10-17 02:44