ContractFilter不匹配错误

时间:2011-09-19 20:21:11

标签: wcf-binding

我在StackOverflow和其他地方看到过几个关于这个错误的线程但是,我一直无法找到解决问题的方法。

我有一个试图调用Web服务方法的应用程序。当它调用一个方法(提供登录验证)时,它工作得很好。然后,当它调用另一个函数(不是登录/成员资格相关)时,它会生成此错误:

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

我重建并重新发布了Web服务,然后从客户端应用程序中删除了服务引用并重新创建它们。我仍然得到错误。以下是客户端应用程序的app.config文件中的相关XML:

    <system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IMyAppData" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://legolas.vectorcsp.home/MyAppSyncService/MyAppData.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyAppData"
            contract="MyAppData.IMyAppData" name="BasicHttpBinding_IMyAppData" />
    </client>       
</system.serviceModel>

以下是Web服务的web.config文件中的相关XML:

                                                                                

<behaviors>
  <serviceBehaviors>
<behavior name="MyAppDataSvc.MyAppDataBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" />

这一切都发生在我的本地机器上。我只是想在客户端应用程序上进行开发。任何人都可以建议我可能尝试发现问题所在。

提前感谢您提供任何建议。


更新:我做了更多测试。我已将Web服务发布到开发服务器,而不是本地计算机。我仍然得到同样的错误。我已经浏览了应用程序和Web服务的配置文件,我找不到任何问题。我已将新创建的Web服务的web.config文件与先前版本的Web服务的web.config文件进行了比较,但我没有看到任何问题。我已将桌面应用程序的app.config文件的相关部分与Web服务的现有客户端的web.config文件进行了比较,但我找不到任何差异。

我已使用Microsoft Service Configuration Editor在桌面应用程序和Web服务上启用了跟踪。当我运行桌面应用程序并抛出错误时,不会在Web服务的目录或桌面应用程序的目录中创建日志文件。

我完全支持这一点。有没有人有任何建议?

感谢。

1 个答案:

答案 0 :(得分:7)

我发现了问题。

在客户端应用程序的app.config文件中,端点的地址与configuration.svcinfo中列出的服务地址不匹配。因此,这两个文件指向Web服务的不同实例和不同版本。