WCF ContractFilter在EndpointDispatcher错误时不匹配

时间:2019-02-26 16:20:51

标签: c# asp.net wcf-data-services

需要帮助的人!我们已有带WCF的旧系统ASP.NET和Microsoft企业库,而我是WCF的新手。他们有一个像这样的系统生成的服务模型

生成的接口系统

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(ConfigurationName = "IMyService")]
public interface IMyService

班级:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public partial class MyService : IMyService

然后他们要求我在这样的接口和类下添加一个方法

接口中添加的方法:

[System.ServiceModel.OperationContractAttribute (Action = "http://tempuri.org/IMyService/DoWork", ReplyAction = "http://tempuri.org/IMyService /DoWorkReponse")]
void DoWork (int param1,int param2);

public void DoWork (int param1,int param2)
{
   base.Channel.DoWork (int param1,int param2);
}

在类中添加了方法:

Public void DoWork(int param1,int param2)

然后当我尝试调用这种方法时:

IMyService.DoWork(1,2)

它显示如下:

System.ServiceModel.ActionNotSupportedException:由于EndpointDispatcher的ContractFilter不匹配,因此无法在接收方处理带有操作“ http://tempuri.org/IMyService/DoWork”的消息。这可能是由于合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配造成的。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全性要求,例如消息,传输,无)。

我想念什么吗?

2 个答案:

答案 0 :(得分:0)

今天我最终遇到了同样的错误,并且通过以下解决方法为我解决了问题。

在客户端应用程序上,删除现有的WCF服务引用并再次添加它可以为我解决此问题。

但是,首先,您可能还需要验证托管应用程序服务合同地址和客户端端点地址合同是否相同。

主机配置。

WCF service

客户端配置

enter image description here

答案 1 :(得分:0)

我通过复制现有服务创建了新服务,但忘记重命名此 .svc 文件中的“服务”属性。

我收到以下错误: System.ServiceModel.ActionNotSupportedException:由于 EndpointDispatcher 的 ContractFilter 不匹配,无法在接收方处理带有 Action 'http://tempuri.org/...' 的消息。这可能是因为合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无)。

一旦我正确设置了“服务”属性,问题就解决了。