WCF 服务合同不匹配

Posted

技术标签:

【中文标题】WCF 服务合同不匹配【英文标题】:WCF Service contract mismatch 【发布时间】:2019-06-27 18:32:18 【问题描述】:

在使用 WCF 网络服务之一方面需要您的帮助。它的工作服务,在我的应用程序中,我们已经从服务中使用了许多方法。我刚刚在 WCF 服务中添加了新方法。当我在 WCF 服务中测试新方法时它工作正常,当我单独测试服务时没有问题。但是我已将新的 WCF 服务 dll 添加到我的 Web 应用程序并尝试使用我的新方法,我总是收到此错误消息,我不明白我在这里犯了什么错误。请帮助我。错误:

由于 EndpointDispatcher 的 ContractFilter 不匹配 这可能是因为合约不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无)。

WCF 服务没有问题,因为服务中的所有其他方法都可以正常工作,除了新添加的方法。

var response = client.GetAllCountries(new GetAllCountriesRequest
        
           Language = "Eng",
           IndustryCode = "TP"
        )

【问题讨论】:

ContractFilter mismatch at the EndpointDispatcher exception的可能重复 【参考方案1】:

这可能是您的问题,当向您的服务添加新方法时,您需要通过转到 Visual Studio 来更新 WSDL 文档,右键单击该服务,然后单击 UpdateConfiguration

https://support.pcmiler.com/en/support/solutions/articles/19000080955-update-a-net-project-service-or-web-reference-with-latest-wsdl

随着时间的推移,WCF 服务的元数据可能会发生变化,这就要求 服务参考被更新。

.NET 更新服务参考:

在解决方案资源管理器中,右键单击服务引用,然后单击 更新服务参考。

在更新参考时会显示一个进度对话框 它的原始位置,并且服务客户端被重新生成到 反映元数据中的任何更改。

更新网络参考:

在解决方案资源管理器中,打开项目的 App_WebReferences 文件夹并 单击要更新的 Web 引用的节点。

右键单击参考,然后单击更新 Web 参考。

XML Web 服务的新文件被下载到您的项目中。 XML Web 服务的信息在您的项目中更新。

【讨论】:

以上是关于WCF 服务合同不匹配的主要内容,如果未能解决你的问题,请参考以下文章

我们是不是需要在 WCF 服务器和客户端中指定相同的绑定?

WCF - 使用完全相同的数据合同的多个服务合同

版本化服务合同后无法访问 WCF 服务

实现异步 WCF 服务

一个 WCF 服务中的多个合同_但调用第二个合同时出错

WCF 捕获异常“服务器没有提供有意义的回复..”