2010-08-06 5 views
0

J'ai un webservice en C# .NET avec l'espace de noms suivant:Passage objet sérialisé par le service Web par rapport à passer l'objet

[WebService (Namespace = "http://enterpriseName/wsName")] 

Le service Web contient une WebMethod GetServiceObject et un MyObject de classe. Cette méthode Web renvoie une chaîne dont le contenu est une instance sérialisée de MyObject.

[WebMethod (MessageName = "GetServiceObjectXML" Description = "Get ServiceObject from Server to Client")] 
public string GetServiceObjectXML() 

Cette méthode renvoie le code XML suivant:

<? 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> 

Le problème que je rencontre est que lorsque j'appelle cette méthode à partir du côté client et essayez de désérialiser ce xml à la classe MyObject et je reçois un Objet NULL.

Après que je créé une nouvelle WebMethod avec la signature suivante:

[WebMethod (MessageName = "GetServiceObject" Description = "Get ServiceObject from Server to Client")] 
public MyObject GetServiceObject() 

Quand j'appelle cette méthode à partir du côté client, je reçois l'objet correctement rempli et je peux aussi sérialiser l'objet sans problème, mais le résultat de sérialisation est le XML suivant:

<? 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> 

qui est différent du xml généré par le WebMethod GetServiceObjectXML.

Comment puis-je contourner ce problème, puisque j'ai l'intention d'utiliser les deux méthodes sur le même service web et chez le même client?

Répondre

1

La réponse évidente serait, fixer GetServiceObjectXML() pour retourner le même XML que GetServiceObject(). La différence semble être que l'objet tel que sérialisé par le framework a un espace de nommage XML différent spécifié. La méthode que vous utilisez pour sérialiser l'objet en XML dans GetServiceObjectXML() ne le fait pas.

Questions connexes