【问题标题】:Can a WCF web service access raw SOAP message Header and Body as XML data?WCF Web 服务可以将原始 SOAP 消息的 Header 和 Body 作为 XML 数据访问吗?
【发布时间】:2013-12-04 23:46:10
【问题描述】:

我需要用 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 流?

【问题讨论】:

    标签: c# wcf soap wse


    【解决方案1】:

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

    public Message ProcessMessage(Message msg);
    

    那么您将拥有Message.HeadersMessage.GetBody 方法。如果您想检查是 SOAP 1.1 还是 1.2,还有一个 Message.Version

    【讨论】:

    • 我无法找到有关如何为此类端点配置 Web.config 文件的详细信息。所有的肥皂示例都假设正在传递参数。你能帮我举个例子吗?我创建了一个带有 [ServiceContract] 属性的类和带有 [OperationContract] 属性的 ProcessMessage 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多