WCF - 客户端必须具有与端点相同的行为吗?

时间:2011-03-30 16:56:01

标签: wcf wcfserviceclient wcf-behaviour

我有以下WCF端点配置:

      <service behaviorConfiguration="MyNamespace.ContainerManagementServiceBehavior"
    name="MyNamespace.ContainerManagementService">
    <endpoint address="" binding="basicHttpBinding"
       name="ContainerManagementbasicHttpEndpoint" contract="MyNamespace.IContainer"/>                  
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>      
   <behaviors>      
    <behavior name="MyNamespace.ContainerManagementServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
</behaviors>

这是我的客户端配置:

<client>
  <endpoint address="http://localhost:3227/Services/ContainerManagementService.svc"
    binding="basicHttpBinding" 
    contract="MyNamespace2.IAQSIDMService" name="externalService" />
</client>

我正在动态进行Web服务调用,提供不同的地址:

var svc = new AQSIDMServiceClient(Constants.External_Service_ConfigurationName, serviceAddress);

当我调用端点时,收到以下错误消息:

  

{“由于EndpointDispatcher上的ContractFilter不匹配,无法在接收方处理带有Action的消息'http:// IMyService / CreateContainer'。   这可能是由于合同不匹配(发送方与接收方之间的操作不匹配)或发送方与接收方之间的绑定/安全性不匹配。检查发件人和收件人是否具有相同的合同和相同的约束(包括安全要求,例如邮件,传输,无)。“}

这可能是因为我的客户端没有与端点相同的serviceBehavior吗?还有别的东西我可以丢失吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

该异常会告诉您究竟出了什么问题。您是否在请求的双方使用相同的合同?绑定和安全性是否相同?

如果您可以先回复这些问题,我们应该能够看到请求失败的原因。您还应该启用对服务的跟踪,并查看发出的错误/警告级别跟踪。这也应该可以帮助您诊断问题。