我需要在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流的访问?
答案 0 :(得分:0)
要处理原始SOAP消息,您应该使用表示原始消息的Message
类。只需创建接受并返回的操作合同即可:
public Message ProcessMessage(Message msg);
然后您将拥有Message.Headers
或Message.GetBody
方法。如果要检查它是SOAP 1.1还是1.2,还有一个Message.Version
。