您好我们正在使用一些政府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方法,像肥皂头
中的这个自定义参数一样发送答案 0 :(得分:2)
您需要创建一个特殊的标头类来输出soap XML以匹配所需的结构。请查看此blog post以了解您需要实施的代码。
基本上,您需要创建类以输出所需的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 ...
}
}