这里是我的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