這裏是我的WCF服務類:WCF系列化忽略XmlRoot名稱以類實現IXmlSerializable的
class MyService : IMyService
{
public String GetService(MyRequest request){...}
}
這裏是請求類:
[XmlRoot("RequestClass")]
class MyRequest : IXmlSerializable
{
public String Id {get;set;}
public String ReqContent {get;set;}
public void ReadXml(XmlReader reader)
{
using (XmlReader rr = reader.ReadSubtree())
{
Id = ...;
ReqContent = ...;
}
}
public void WriteXml(XmlWriter writer)
{
// write customize format content to the writer
}
}
MyRequest類的序列與以下XmlSerializer的情況下進行測試:
StringBuilder xml = new StringBuilder();
XmlSerializer ser = new XmlSerializer(typeof(MyRequest), "");
using (XmlWriter writer = XmlWriter.Create(xml))
{
ser.Serialize(writer, req);
}
並得到了如下的xml:
<RequestClass>
<Id>123</Id>
<ReqContent>...</ReqContest>
</RequestClass>
一切都很好。但是,我申請了WCF服務和請求類傳遞給服務後,在XML中的ReadXml得到的是如下:
<request xmlns="http://tempuri.org/">
<Id>123</Id>
<ReqContent>...</ReqContest>
<request>
WCF串行更換類的根元素,我該如何解決這個問題?
任何想法是值得歡迎和讚賞的,我已經困擾了好幾天這個問題。
PS1:我已經閱讀post,不知道如何解決這個問題。 PS2:我不確定這是否是由我在項目中使用的ClearUsernameBinding造成的。如果是的話,我怎樣才能在不改變綁定的情況下修復它?
感謝您的回覆。經過幾天的研究,我打電話給另一個[問題](http://stackoverflow.com/questions/33295255/why-i-got-null-parameter-in-wcf-service-call-if-i-change-the-消息標籤名稱),FYR。 – jones