La méthode 'XYZ' ne peut pas être traduit
Nous avons consommé un tiers de service web et essayez de l'appeler à partir d'un ASP.NET application web.
Cependant lorsque j'instancie le service web le Système suivant.Exception InvalidOperationException est jeté:
Méthode ABC.XYZ' ne peut pas être pris en compte.
Système.InvalidOperationException:
Méthode ABC.XYZ' ne peut pas être pris en compte.
---> Système.InvalidOperationException: L'élément XML 'MyDoc' de l'espace de noms
'http://mysoftware.com/nsréférences
une méthode et un type. Modifier la
la méthode nom du message à l'aide de
WebMethodAttribute ou de modifier le
type de l'élément racine à l'aide de la
Attribut xmlrootattribute.
De ce que je peux recueillir il semble y avoir une certaine ambiguïté entre une méthode et un type dans le service web.
Quelqu'un peut-il préciser le probablement la cause de cette exception et est-ce que je peux faire pour remédier à cela ou dois-je simplement aller pour le service web propriétaires de rectifier?
Edit: Visual Studio 2008 a créé la classe proxy. Je ne peux malheureusement pas fournir un lien vers le fichier wsdl, comme il est un service web pour installé localement troisième partie application.
OriginalL'auteur Andy Rose | 2008-09-25
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré le même problème, plus tôt aujourd'hui.
La raison en était la classe générée par Visual Studio et transmis en tant que paramètre dans l'une de ces méthodes n'a pas un défaut constructeur sans paramètre. Une fois que j'ai ajouté, l'erreur a disparu.
Et l'équilibre a été rétabli -- j'ai perdu 5 heures avant de trouver ce post
OriginalL'auteur kdanylo
Il semble que le problème est en baisse de type de données, entre VS et le service web qui a été écrit en Java.
Finalement, il a été fixé par la modification manuelle de la classe et le schéma des fichiers qui ont été créés par VS.
désolé, manière de il y a longtemps de se souvenir exactement de ce que j'ai fait, mais il aurait été sur les lignes de mise à jour manuelle du proxy classes qui VS a créé pour accéder au service, à l'utilisation des types de données qu'elle attendait.
En fait, j'ai réussi à le fixer trop, il était une propriété de la classe générée avec le même nom que webservice méthode. J'ai renommé la classe et il a fixé
J'imagine que vous m'avez sauvé tout à fait mal à la tête. J'avais ajouté quelques classes partielles basées sur une .xsd et l'ajout d'un défaut ctor fait. Merci!
OriginalL'auteur Andy Rose
J'ai rencontré exactement le même problème lorsque j'était en train de consommer une 3ème partie de service web. Le problème dans ce cas est que le mustUndertand propriété dans le fichier de référence a été la recherche d'un Booléen, en vertu de laquelle la propriété d'espace de noms cherché une chaîne de caractères.
En regardant à travers la référence, j'ai pu idenitfy la propriété fautive et ajoutez simplement "remplace" à la signature de la méthode.
Pas idéal, car tout le temps de vous mettre à jour le service que vous avez à faire cela, mais je ne pouvais pas trouver un autre moyen de contourner cela.
Pour trouver le fichier de référence, sélectionnez "tous les fichiers" à partir de l'explorateur de solutions
Espère que cette aide
OriginalL'auteur Dean
Je devine le wsdl émis par ou fournies avec le service n'est pas en forme wsdl.exe ou serviceutil peut comprendre - pouvez-vous poster le wsdl ou un lien vers elle?
comment êtes-vous créer les classes proxy?
Aussi, vous aimeriez essayer et valider le wsdl contre le wsdl schéma de vérifier la validité de son
OriginalL'auteur Richard
Dans mon cas, j'ai été prendre une "méthode ne peut pas être traduit" erreur dû au fait que dans la classe qui est retourné par la méthode, je n'avais pas réussi à exposer un paramètre par défaut-moins de constructeur.
Je travaillais dans VB.NET. À mon retour en classe, j'avais déclaré une "Nouvelle(..)" méthode qui a pris une couple de paramètres (parce que c'est la façon dont je voulais l'utiliser dans mon code). Mais ce faisant, j'avais perdu de la valeur par défaut (caché) sans paramètre New() constructeur que VB ajoute derrière les coulisses. Apparemment, le web service gestionnaire exige qu'un constructeur sans paramètre être disponible. Dès que j'ai ajouté dans ma classe un sans paramètre New() constructeur, tout a bien fonctionné.
OriginalL'auteur Tod Flak
J'ai eu le même message, mais le mien a été causé par un manque System.Runtime.Serialization.dll depuis j'ai essayé d'exécuter un 3.5 application sur une machine avec seulement .NET 2.0 est installé.
OriginalL'auteur Gerrie Schenck
J'ai eu le même problème mais j'ai trouvé que l'un des
WebMethod
paramètres a un membre qui est de typeinterface
c'est pourquoiVS
ne pouvait pas serialise. ici est l'exception, lorsque vous essayez de télécharger ledisco
fichierOriginalL'auteur Has AlTaiar
Vieux thread mais j'ai eu un autre problème, Peut-être de l'aide à quelqu'un. dll référencées ont été mélangés entre les deux versions sur les données de la couche et de la couche de service qui a provoqué le problème.
OriginalL'auteur Qazi
Un autre scénario où cette erreur peut se produire: j'ai simplement eu une autre méthode avec le même nom (mais différents paramètres)dans mon service web qui a glissé au cours d'un code de fusion. Après j'ai supprimé l'ancienne méthode, il a travaillé.
OriginalL'auteur justAlex