2017-09-29 4 views
0

J'ai un problème avec un service web mais je ne vois pas l'erreur. J'ai utilisé un wsdl pour générer la référence Web dans VS2017. C'est la classe qui a été générée:C# Problèmes avec la sérialisation XML

https://gist.github.com/meteora1986/b43c9750ddeb50187420edd6741301f5

Lorsque vous utilisez cette classe xml utilisée pour le webservice n'est pas généré avec les XMLATTRIBUTES-options. Lors du débogage i découvert des erreurs suivantes par le XMLImporter: errors

donc j'ai essayé de sérialisation pour obtenir un message d'erreur plus détaillé avec le code comme

try 
{   
    var serializer = new XmlSerializer(typeof(ari_webserviceService)); 
} 
catch (Exception ex) 
{ 
    // codes  
} 

Et obtenu à partir de la exeption ces messages: 1 Message interne: Une erreur est survenue dans le champ "Site". 2. Message interne Il y avait une erreur reflétant le type 'System.ComponentModel.ISite'.

Mais ces champs ou types ne sont-ils pas utilisés dans la classe webservice? Quelqu'un peut-il aider?

+0

Pourquoi vous essayez de sérialiser votre classe de service ? Qu'essayez-vous d'accomplir et quel est le problème? –

+0

J'ai juste essayé d'obtenir un message d'erreur plus spécifié. Je ne le sérialise pas à d'autres fins. – Stefan1986

+0

J'ai juste essayé d'obtenir un message d'erreur plus spécifié. Je ne le sérialise pas à d'autres fins. Quand j'utilise le service web, le xml qui est envoyé n'est pas le xml qu'il devrait être. Les attributs xml, par exemple les noms d'objet sont ignorés. Par exemple, l'objet "ixml" doit être nommé "i.xml" mais cela ne fonctionne pas pour tous les objets. Il semble que toutes les commandes de ce type sont ignorées: "[System.Xml.Serialization.XmlElementAttribute (...)]". Mais je ne sais pas pourquoi et c'est le problème ... – Stefan1986

Répondre

0

Je n'ai absolument aucune idée des services Web en général.

Mais votre service Web est dérivé de SoapHttpClientProtocol. Si vous montez les classes de base par HttpWebClientProtocol et WebClientProtocol pour finir avec Component vous verrez la propriété Component.Site.

Vous pourrait être en mesure de résoudre votre problème si vous implémenter l'interface IXmlSerializable d'avoir un contrôle complet ce (et comment) vous voulez sérialiser les données ...

+0

Merci, je n'ai pas vu ça. Je pense que c'était la mauvaise façon de sérialiser la classe entière du service Web à des fins de débogage. mais j'essaye d'implémenter IXmlSerializable, merci pour vos conseils! – Stefan1986