我在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服务的目录或桌面应用程序的目录中创建日志文件。
我完全支持这一点。有没有人有任何建议?
感谢。
答案 0 :(得分:7)
我发现了问题。
在客户端应用程序的app.config文件中,端点的地址与configuration.svcinfo中列出的服务地址不匹配。因此,这两个文件指向Web服务的不同实例和不同版本。