2011-09-19 95 views
2

我在StackOverflow和其他地方看到了关于这个错误的几个线程,但是,我一直无法得到我的问题的解决方案。ContractFilter不匹配错误

我有一个应用程序试图调用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服务的目录或桌面应用程序的目录中都不会创建日志文件。

我完全停留在此。有没有人有什么建议?

谢谢。

回答

7

我发现了这个问题。

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