【问题标题】:Why are the soap headers missing when using Custom MessageEncoder为什么使用自定义 MessageEncoder 时缺少肥皂标头
【发布时间】:2016-05-30 14:52:39
【问题描述】:

我正在创建一个自定义消息编码器,类似于您在 WCF 示例项目 (WF_WCF_Samples\WCF\Extensibility\MessageEncoder\Compression) 中的内容。

我遇到的问题是发送请求时,使用没有压缩的默认 textMessageEncoder 会在编码后产生此请求。

但是,当我使用带有 gzip 压缩的自定义编码器并从soapUI 发送请求时,这就是我得到的。

如您所见,缺少 ToAction。它最终给了我这个例外。

The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 

这可以通过在 MessageEncoder 中手动添加以下内容来解决

message.Headers.To = new Uri("http://localhost:19860/Service1.svc");
message.Headers.Action = @"http://tempuri.org/IService1/GetData";

所以我的问题是为什么会这样?即使我只是使用内部编码器来创建消息,为什么在使用自定义 MessageEncoder 时我会丢失我的标头?

这是完整的解决方案。要测试它,您只需要soap ui 并将请求发送到http://localhost:19860/Service1.svc

https://github.com/janmchan/WCFCompression

【问题讨论】:

    标签: wcf soap compression


    【解决方案1】:

    终于找到问题了。这似乎是 WCF 上的一个错误。 SoapHeaders 中的 Action 和 To 在 Soap 1.2 上并不真正需要,但出于某种原因,即使在使用该版本时,即使我只是调用内部编码器的 ReadMessage,我仍然仅在使用自定义 MessageEncoder 时遇到 WCF 的这个问题。解决方案也相当令人困惑。正如错误消息所暗示的那样,Action 与soap 动作不匹配,所以我只需要添加一个标头 SOAPAction,即使它是空白的。

    这是帮助我找到解决方案的帖子。

    WCF - SOAP Action mismatch error while testing with SoapUI

    【讨论】:

      猜你喜欢
      • 2019-06-23
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      相关资源
      最近更新 更多