我正在创建一个类似于WCF示例项目中的自定义消息编码器(WF_WCF_Samples \ WCF \ Extensibility \ MessageEncoder \ Compression)。
我遇到的问题是在发送请求时,使用没有压缩的默认textMessageEncoder会在编码后生成此请求。
但是,当我使用gzip压缩的自定义编码器并从soapUI发送请求时,这就是我得到的。
如您所见,缺少至和操作。它最终给了我这个例外。
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时错过了我的标题,即使我只是使用内部编码器来创建消息?
这是完整的解决方案。要测试它,你只需要肥皂ui并发送请求到http://localhost:19860/Service1.svc
答案 0 :(得分:0)
终于找到了问题。这似乎是WCF上的一个错误。 SoapHeaders中的Action和To不应该在Soap 1.2上真正需要,但由于某些原因,即使使用该版本,我仍然只在使用自定义MessageEncoder时才会遇到此问题,即使我只是调用内部编码器的ReadMessage。解决方案也非常令人困惑。正如错误消息所示,Action与soap操作不匹配,所以我只需要添加标头SOAPAction,即使它是空白的。
以下是帮我找到解决方案的帖子。