J'ai une opération WCF MyGetVersion() qui renvoie une System.Version. Lors du débogage d'un appel à partir d'une référence de service Silverlight, j'ai vérifié que le service renvoie l'objet System.Version correct. Dans le service de référence, la méthode générée automatiquement:Silverlight ServiceReference provoque MethodAccessException
public System.Version EndMyGetVersion(System.IAsyncResult result) {
object[] _args = new object[0];
System.Version _result = ((System.Version)(base.EndInvoke("MyGetVersion", _args, result)));
return _result;
}
soulève l'exception:
tentative par la méthode « DynamicClass.ReadVersionFromXml (System.Runtime.Serialization.XmlReaderDelegator, System.Runtime.Serialization.XmlObjectSerializerReadContext, System.Xml.XmlDictionaryString [], System.Xml.XmlDictionaryString []) 'pour accéder à la méthode' System.Version..ctor() 'a échoué.
J'ai dû activer l'assistant "break on CLR exception" pour le voir. Sinon, il s'agit d'une exception TargetInvocationException. Le constructeur System.Version() est public autant que je peux dire. Qu'est-ce que je fais mal?
Merci, malheureusement le contrat est utilisé par d'autres services et d'autres clients s'attendent à une System.Version. Je devrais ajouter une autre opération qui le renvoie simplement comme une chaîne pour le client Silverlight je suppose. – GWTF
Vous pouvez également modifier le proxy généré pour SL comme je l'ai ajouté dans la réponse ci-dessus. Le seul problème avec cette approche est que chaque fois que vous mettez à jour la référence de service de Silverlight, vous devrez remplacer la classe à nouveau. – carlosfigueira