2013-02-28 28 views
2

我有這樣的代碼由於某種原因不是寫名字或命名空間或屬性WCF的MessageHeader不會寫名字空間

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()) }; 
+0

我推測這是用於WCF的嗎? – 2013-02-28 21:46:40

+0

是的,它適用於wcf – Fonzy 2013-02-28 21:49:41

+0

如果您使用WCF,在標籤中放置[tag:wcf]是很好的做法。 – 2013-02-28 22:21:08

回答

0

我可以添加屬性,但根節點需要有前綴。我試圖避免它,但不成功。

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