2010-08-06 87 views
0

我在用下面的命名空间C#.NET web服务:通过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不同。

如何解决这个问题,因为我打算在同一个webservice上和同一个客户上使用这两种方法?

回答

1

明显的答案是,修复GetServiceObjectXML()以返回与GetServiceObject()相同的XML。差异似乎是由框架序列化的对象具有指定的不同XML名称空间。无论您使用什么方法将对象序列化到GetServiceObjectXML()中的XML中,都没有这样做。