c# - WCF MessageHeader 不会写入命名空间

标签 c# wcf soap

我有这段代码,由于某种原因没有写名称或命名空间或属性

public class MultiSpeakHeader : MessageHeader
{
    protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion)
    {
        writer.WriteAttributeString("AppName", "A");
        writer.WriteAttributeString("AppVersion", "1");
        writer.WriteAttributeString("CSUnits", "feet");
    }

    public override string Name
    {
        get { return "MultiSpeakMsgHeader"; }
    }

    public override string Namespace
    {
        get { return "http://www.multispeak.org/Version_3.0"; }
    }
}

类的实例结果如下:

<MultiSpeakHeader xmlns="http://schemas.datacontract.org/2004/07/my.app" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"/>

我需要这个:

<MultiSpeakMsgHeader xmlns="http://www.multispeak.org/Version_3.0" AppName="A" AppVersion="1" CSUnits="feet" /> 

代码使用:

AddressHeader[] header = { AddressHeader.CreateAddressHeader(new MultiSpeakHeader()) };

最佳答案

我可以添加属性,但根节点需要有前缀。我试图避免它但没有成功。

writer.WriteXmlnsAttribute("test", this.Namespace);
writer.WriteAttributeString("AppName", "A");
writer.WriteAttributeString("AppVersion", "1");
writer.WriteAttributeString("CSUnits", "feet");

关于c# - WCF MessageHeader 不会写入命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15146092/

相关文章:

java - 发送 SOAP 消息

c# - aspx页面的url重写

wcf - 使用 PowerShell 的 New-WebServiceProxy 访问 net.tcp 端点

c# - 使用 jquery POST 数据的启用 Ajax 的 wcf 服务在短时间内未发送

wcf - 将派生类转换为 WCF 序列化的基类

c# - 需要帮助连接国家铁路查询(英国)API(LDBWS)

java - 如何在不明确指定的情况下获取 Magento Product 的所有附加属性

c# - 更改事件标签页上的字体颜色

c# - 用于删除站点操作菜单项的 Sharepoint 自定义操作

c# - 垃圾收集器如何处理静态类使用的类型对象?