我需要在 C# 中构建一个 Web 服务,它将接收一个 SOAP 1.1 消息,其中 <Envelope><Header>
和 <Envelope><Body>
将只包含复杂的 XML 数据。
在 WSE 中(根据 this Microsoft page),创建 SOAP 网络服务来处理此类消息似乎相当简单:
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 创建可以接收原始 SOAP 1.1 消息并提供对 <Envelope><Header>
的访问的 Web 服务?和 <Envelope><Body>
节作为 XML 元素或 XML 流?
最佳答案
要处理原始 SOAP 消息,您应该使用 Message
类,代表原始消息。只需创建接受并返回它的操作合约:
public Message ProcessMessage(Message msg);
然后您将拥有 Message.Headers
或 Message.GetBody
方法。如果您想检查它是 SOAP 1.1 还是 1.2,还有一个 Message.Version
。
关于c# - WCF Web 服务能否将原始 SOAP 消息 header 和正文作为 XML 数据访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20388549/