2010-12-09 23 views
12

Je reçois un "Unspecified error" lorsque j'essaie d'appeler une méthode de service Web particulière. En utilisant XMLSpy, je découvre que l'objet paramètre n'a tout simplement pas été sérialisé.Sérialisation XML: objet non sérialisé

Dans la source sérialiseur générée Je note les lignes:

if (!needType) { 
    System.Type t = o.GetType(); 
    if (t == typeof(global::moonraker1.Conference)) { 
    } 
    else { 
    throw CreateUnknownTypeException(o); 
    } 
} 

Cependant, l'importation wsdl avait créé une unité appelée moonraker1.BookingService, de sorte que le type de l'objet de paramètre est en fait moonraker1.BookingService.Conference. Il semble tout à fait possible que c'est pourquoi l'objet n'est pas sérialisé, bien que je ne comprends pas pourquoi le message semble toujours être passé au service Web.

S'il vous plaît quelqu'un peut-il faire la lumière sur ce sujet? Ou suis-je entièrement sur la mauvaise piste?

+0

version de Delphi vous utilisez? – Sam

+3

Ce code n'est pas Delphi, cette question est-elle taguée correctement? –

+0

L'objet paramètre est-il marqué comme optionnel dans le fichier wsdl? Si c'est le cas, vous devez définir le champ 'ParameterSpecified' sur true afin de le sérialiser. – Ryan

Répondre

1

Maintenant je ne sais pas si c'est ça, mais ça ressemble à du code .NET. Peut-être que la réponse est aussi simple que vous avez besoin d'un constructeur par défaut dans votre type.

Ma propre expérience de sérialisation .NET est que la plupart du temps, il est juste parce que je l'ai écrit un constructeur personnalisé, puis oublié d'écrire un constructeur par défaut après ..