WCF Web服务可以将原始SOAP消息Header和Body作为XML数据进行访问吗?

时间:2013-12-04 23:46:10

标签: c# wcf soap wse

我需要在C#中构建一个Web服务,它将收到一条SOAP 1.1消息,其中<Envelope><Header><Envelope><Body>将只包含复杂的XML数据。

在WSE中(根据this Microsoft page),创建一个SOAP Web服务来处理这种类型的消息似乎很简单:

class MyReceiver : SoapReceiver
{
    protected override void Receive(SoapEnvelope message)
    {
        // Do something with the message
        // such as display its contents.
    }
}

但是,由于WSE正在折旧,我想使用WCF构建此服务。

但是,我发现的WCF示例似乎具有将特定参数集传递给特定方法的多样性。

[OperationContract]
string GetData(int value);

有没有办法使用WCF创建一个Web服务,它可以接收原始SOAP 1.1消息并提供对<Envelope><Header><Envelope><Body>部分作为XML元素或XML流的访问?

1 个答案:

答案 0 :(得分:0)

要处理原始SOAP消息,您应该使用表示原始消息的Message类。只需创建接受并返回的操作合同即可:

public Message ProcessMessage(Message msg);

然后您将拥有Message.HeadersMessage.GetBody方法。如果要检查它是SOAP 1.1还是1.2,还有一个Message.Version