我在C#.NET中有一个带有以下命名空间的Web服务:
[WebService (Namespace = "http://enterpriseName/wsName")]
Web服务包含WebMethod GetServiceObject和类MyObject。 此Web方法返回一个字符串,其内容是MyObject的序列化实例。
[WebMethod (MessageName = "GetServiceObjectXML" Description = "Get ServiceObject from Server to Client")]
public string GetServiceObjectXML ()
此方法返回以下XML:
<? Xml version = "1.0" encoding = "utf-16"?>
<ServiceObject Xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Services>
<service>
<id>3</id>
<date>02/08/2010</date>
</service>
</Services>
</ServiceObject>
我遇到的问题是,当我从客户端调用此方法并尝试将此xml反序列化为类MyObject时,我得到一个NULL对象。
之后我创建了一个具有以下签名的新WebMethod:
[WebMethod (MessageName = "GetServiceObject" Description = "Get ServiceObject from Server to Client")]
public MyObject GetServiceObject ()
当我从客户端调用此方法时,我正确地填充了对象,我也可以顺利地序列化对象,但序列化的结果是以下xml:
<? Xml version = "1.0" encoding = "utf-16"?>
<ServiceObject Xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Services Xmlns="http://enterpriseName/wsName">
<service>
<id>3</id>
<date>02/08/2010</date>
</service>
</Services>
</ServiceObject>
与WebMethod GetServiceObjectXML生成的xml不同。
我如何解决这个问题,因为我打算在同一个Web服务和同一个客户中使用这两种方法?
答案 0 :(得分:1)
显而易见的答案是,修复GetServiceObjectXML()以返回与GetServiceObject()相同的XML。差异似乎是框架序列化的对象具有指定的不同XML命名空间。无论您使用什么方法将对象序列化为GetServiceObjectXML()中的XML,都不会这样做。