1

您好,我们正在使用一些政府 WCF 服务。在旧方法中,他们正在寻找这样的肥皂标题。

<islemKodu>2</islemKodu>
<islemNedeni>Döküman iptal edildi</islemNedeni>

我们将 MessageInspector 添加到此;

public object BeforeSendRequest(ref Message request, IClientChannel channel)
        {
request.Headers.Add(MessageHeader.CreateHeader("islemKodu", "", "2"));
request.Headers.Add(MessageHeader.CreateHeader("islemNedeni", "", "Döküman iptal edildi"));
return null;
}

所以这是正确的。

但是政府已经像这样改变了肥皂标题。

<param:SaglikNetParameters xmlns:param="http://saglik-net.saglik.gov.tr/parametreler/">
<param:parameter name="islemKodu">2</param:parameter>
<param:parameter name="islemNedeni">Döküman iptal edildi</param:parameter>
</param:SaglikNetParameters>

所以现在我怎样才能改变我们的 BeforeSendRequest 方法在soap头中发送这样的自定义参数

4

1 回答 1

2

您需要创建一个特殊的标头类来输出soap XML 以匹配所需的结构。查看这篇文,了解您需要实现的代码。

基本上,您需要创建类以输出所需的 XML,然后按如下方式使用该类:

// %< snipped >%

var specialHeader = GovMsgHeader.CreateHeader( /* any parameters */ );
request.Headers.Add(specialHeader);

// %< snipped >%

特殊类看起来像这样:

public class GovMsgHeader : MessageHeader {
    protected override void OnWriteStartHeader(
        System.Xml.XmlDictionaryWriter writer,
        MessageVersion messageVersion) {

        base.OnWriteStartHeader(writer, messageVersion);

        // Write your custom XML using the XmlDictionaryClass:
        //TODO: add the 'param' XML namespace to the writer...
        //TODO: add the container element with something like this:
        writer.WriteElementString("SaglikNetParameters", "param", "");

        writer.WriteElementString("parameter", "param", "2");
        writer.WriteAttributeString("name", "", "islemKodu");
        //TODO: complete the rest of the XML ...
    }
}
于 2013-04-10T17:46:39.547 回答