c# - WCF Web 服务能否将原始 SOAP 消息 header 和正文作为 XML 数据访问?

标签 c# wcf soap wse

我需要在 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.HeadersMessage.GetBody 方法。如果您想检查它是 SOAP 1.1 还是 1.2,还有一个 Message.Version

关于c# - WCF Web 服务能否将原始 SOAP 消息 header 和正文作为 XML 数据访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20388549/

相关文章:

c# - 游戏编程 ~ SDL/Allegro/SFML/或游戏引擎

android - 发布 XML 请求和 XML 响应 Volley 库

使用 SSL 的 WCF 服务

web-services - Wso2 文件上传。连接重置

c# - 顺序 GUID

c# - .Net 生成 CSV 文件

c# - 类实现具有冲突方法签名的接口(interface)

wcf - 使用 WCFTestClient 工具时无法获取元数据

windows - 如何在Windows服务上添加证书

java - 如何在 SOAPFault 中设置 faultCode?