没有Soap Action的WCF肥皂服务

时间:2017-10-31 15:21:25

标签: c# wcf soap

我有一个现有的soap客户端,他在不使用soap action属性的情况下与soap服务进行通信。现在,我们最近使用C#WCF服务替换了这个soap服务,默认情况下需要使用soap操作。 当我再次导入WSDL时,没有问题。但是,由于向后兼容的原因,我不想重新生成soap客户端。今天下午我发现了一篇文章解决了我的问题:http://spikesoftware.azurewebsites.net/?p=151#comment-396784

现在的问题是我的C#客户端无法调用大多数soap操作。我不知道为什么它不再起作用了。 我收到的错误如下:

消息:

  

System.ServiceModel.FaultException`1 [System.ServiceModel.ExceptionDetail]   :反序列化操作的请求消息的主体时出错   'GetWorkshops'。 OperationFormatter遇到无效的消息   身体。预计会找到名称为“Element”的节点类型   'GetWorkshops'和名称空间'http://tempuri.org/'。找到节点类型   名为“GetWorkshops_V2”和名称空间的“元素”   'http://tempuri.org/'

这两种方法的操作合同如下:

[OperationContract(Action = "GetWorkshops", Name = "GetWorkshops")]
    WorkshopResponse GetWorkshops(<some parameters>)

[OperationContract (Action = "GetWorkshops_V2", Name = "GetWorkshops_V2")]
    WorkshopResponse_V2 GetWorkshopsV2(<some parameters>)

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

你可以尝试一些事情,

  1. 请使用wsHttpBinding而不是basicHttpBinding
  2. 使用svcutil生成客户端代理