【发布时间】:2014-12-18 00:52:26
【问题描述】:
我们有一个返回对象的测试 WCF Web 服务:
[ServiceContract]
[XmlSerializerFormat]
public interface IService1
{
[OperationContract]
MyObject GetData();
}
//Deserialize MyObject instance from a string
public MyObject GetData()
{
string sXml = TestApp.Properties.Resources.Template;
object o = null;
using (TextReader rdr = new StringReader(sXml))
{
o = new XmlSerializer(typeof(MyObject)).Deserialize(rdr);
}
return (MyObject)o;
}
MyObject 实例的 xml 表示形式如下:
<MyObject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
<notificationParty xsi:nil="true"></notificationParty>
...
</MyObject>
wcf 服务的实际响应如下:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
...
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MyObject>
...
<notificationParty xsi:nil="true"></notificationParty>
...
</MyObject>
</s:Body>
</s:Envelope>
我的问题是,为什么 .net 框架将 xml:xsi 命名空间从 MyObject 元素移动到 Body 信封?
【问题讨论】:
-
这个问题有什么解决办法吗?
标签: c# asp.net .net web-services wcf