Qu'est-ce WCF erreur de dire: “la Coutume de l'outil avertissement: Impossible d'importer wsdl:portType”
J'ai créé un service WCF projet de bibliothèque dans ma solution, et le service de références. J'utilise les services d'une bibliothèque de classe, donc j'ai des références de mon application WPF projet, en plus de la bibliothèque de classe. Des Services sont mis en place avant droite - seulement changé d'obtenir async des fonctions de service.
Tout fonctionnait bien, - jusqu'à ce que je voulais mettre à jour mon références de service. Il a échoué, alors finalement, j'ai roulé en arrière et de tentative d'appel, mais il n'a pas même alors! Donc, - mise à jour des références de service échoue sans faire aucune modification. Pourquoi?!
L'erreur que j'obtiens est celui-ci:
Custom tool error: Failed to generate code for the service reference
'MyServiceReference'. Please check other error and warning messages for details.
L'avertissement donne plus d'informations:
Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension:
System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: List of referenced types contains more than one type with data contract name 'Patient' in
namespace 'http://schemas.datacontract.org/2004/07/MyApp.Model'. Need to exclude all but one of the
following types. Only matching types can be valid references:
"MyApp.Dashboard.MyServiceReference.Patient, Medski.Dashboard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
"MyApp.Model.Patient, MyApp.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='ISomeService']
Il y a deux avertissements trop en disant:
Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='ISomeService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_ISomeService']
Et de même pour:
Custom tool warning: Cannot import wsdl:port ..
Je trouve cela déroutant.. je n'ai pas un Patient de classe sur le côté client de tableau de bord à l'exception de celui que j'ai eu par le biais du service de référence. Donc, ça veut dire quoi? Et pourquoi est-il soudainement apparaître? Rappelez-vous: je n'ai même pas changer quoi que ce soit!
Maintenant, la solution a été trouvée ici, mais sans une explication de ce que cela signifie. De la sorte; dans la section "Configurer le service de référence" pour le service que j'ai décocher la case "Réutilisation des types dans les assemblys référencés" case à cocher. La reconstruction de maintenant, tout fonctionne très bien sans problèmes. Mais qu'ai-je vraiment changer? Cela fera un impact sur ma demande? Et quand décochez cette case? Je ne veux réutiliser les types que j'ai mis en place DataContract sur, mais pas plus. Vais-je encore accès à ces sans cette vérification?
- Ok, il y a une courte explication sur msdn (msdn.microsoft.com/en-us/library/bb628653.aspx). Mais quelqu'un aurait-il une meilleure explication? Comment procéder, reportez-vous à la DataContract je mettre en place?
Vous devez vous connecter pour publier un commentaire.
Lorsque vous ajoutez une référence de service, il y a deux façons les types qui sont utilisés par le service peuvent être traitées:
Il y a beaucoup de choses qui peuvent mal se passer. Nous avons constaté que si l'outil se bloque, il est parfois plus rapide de supprimer le service de référence et de commencer à nouveau.
Nous avons cessé d'utiliser le service de référence. Pour les projets où nous avons le contrôle du client et le service, nous utilisons la méthode décrite dans cette screencast.
J'ai trouvé ma réponse ici: http://www.lukepuplett.com/2010/07/note-to-self-don-let-wcf-svcutil-reuse.html
Longue histoire courte: j'ai décoché Réutiliser les types de référence assemblées de la menu Avancé.
Je ne sais pas si c'est important mais je ne suis pas en utilisant MVC, mais les Formulaires Web.
J'ai aussi eu ce problème aujourd'Hui. Il m'a fallu une journée entière pour trouver mon erreur. Espérons que cela aide.
Ma classe qui n'ont pas pu être importés a un cutom enum type de propriété. Cette propriété est marqué comme DataMember et l'Enum est également marqué comme DataContract. Tout d'amende jusqu'à présent.
J'ai juste oublié de le marquer chaque membre enum comme EnumMember.
J'ai donc changé
À ceci:
Et il a finalement travaillé!
Aller à des propriétés Avancées, tout en ajoutant de référence et de supprimer "le Système de.De la fenêtre.Navigateur" à partir de la liste de contrôle, Il résout le problème.
cela peut paraître bizarre, mais je l'ai résolu en supprimant les références, puis de la fermeture de Visual Studio, et de le rouvrir à nouveau, et enfin l'ajout de références à nouveau.
Je pense que l'outil personnalisé chose doit être redémarré ou quelque chose.
Je ne cesse de courir à travers cette erreur alors qu'il fonctionne sur un autre développeurs de la machine. Même si je suis un administrateur complet partout dans ma machine virtuelle, j'ai essayé de clôture de Visual Studio, et ré-ouverture avec "Exécuter en tant Qu'Administrateur" et la magie a fonctionné.
Bonne chance.
J'ai eu l'avertissement après la mise à niveau de ma solution de Visual Studio (VS) de 2010 à 2013 et l'évolution de chaque projet .NET Framework 4 à 4.5.1. J'ai fermé VS et ré-ouvert et les mises en garde s'en alla.
Une baisse de la désactivation de "réutiliser les types dans les assemblys référencés' est qu'il peut causer des problèmes avec des références ambiguës. Cela est dû à la référence de service de la création de ces objets dans la référence .cs fichier, et votre code de mise en œuvre de la prestation de service peut être leur référencement dans l'espace de noms d'origine.
Lorsque ce scénario se produit, je crois utile de vérifier la réutilisation des types dans les assemblys référencés " qui me permet de choisir ceux avec des références ambiguës seulement, ce qui résout le problème rapidement de cette façon.
Espère que cela aide quelqu'un d'autre.
Mes interfaces du service WCF sont dans un assemblage, la mise en œuvre en est une autre, et que le service de référence est encore une autre assemblée, séparée de celle des clients du service de référence. J'ai eu le message d'erreur juste après j'ai appliqué la DataContract à un enum. Après j'ai appliqué EnumMember les domaines de l'enum, le problème s'est résolu.
En cas de doute que votre service n'a pas de problèmes (tels que des problèmes avec les énumérations, ou non sérialisable classes comme mentionné par d'autres), puis essayez de créer un nouveau projet avec une nouvelle référence.
Je suis de l'utilisation de Silverlight 5 et j'ai essayé de supprimer et de recréer la référence à plusieurs reprises. Le
reference.cs
fichier vient complètement vide à chaque fois et il a été littéralement des années que je n'avais pas créé de sorte à essayer de comprendre ce qui avait changé dans le service était hors de question.J'ai remarqué que l'erreur contenait des références à 2.0.5.0. Maintenant, je ne sais même pas si c'est réellement pertinente pour la version Silverlight, mais ça m'a fait penser à la création d'un nouveau projet, puis, soudain, tout a fonctionné.
Je cherchais sur mon projet et j'ai eu ce même problème. Il s'est avéré être des versions différentes de la même DLL de la WCF vs Site Web.
Site Web a une nouvelle version de la DLL et le service était de la référence à une ancienne version de la DLL. Une fois qu'ils étaient tous en phase tous bien travaillé.
J'ai vécu la même erreur. J'ai lutté pendant presque une journée à essayer de trouver ce qui n'allait pas. L'idée pour moi étaient les avertissements que VS jetait. Il était en train de faire une sorte de cartographie de Yahoo.Yui.Compressor.dll une bibliothèque que j'avais ajoutés et supprimés (parce que j'ai décidé de ne pas l'utiliser) un couple de jours avant. C'est choquant parce que la bibliothèque n'était pas là, mais de toute façon il essayait de référence.
Enfin, je restaurer cette dll à partir de la Corbeille, et puis j'ai pu mettre à jour mon service de référence avec succès.
Pour tout le monde ici dans le futur, j'ai eu la même erreur, mais causée par des problèmes de version, de deux manières différentes.
J'ai deux services WCF et deux applications client que de parler via le service de références. J'ai mis à jour un package nuget sur les deux côtés et a essayé de mettre à jour le service de référence et a obtenu cette erreur.
La suppression n'a pas aidé. En décochant "la réutilisation des assemblées" n'est pas souhaitée car j'ai besoin de les réutiliser - c'est le point de l'ensemble.
À la fin, il y avait deux questions distinctes:
1) La première question, je crois, était un visual studio problème de mise en cache. Je méticuleusement suis allé sur toutes les références et n'a trouvé aucun problèmes, mais il a tout de même déclaré être incapables de trouver la version précédente du fichier. J'ai désinstallé tous les packages nuget, redémarré visual studio, et réinstallé eux. Mise à jour du service de référence travaillé.
2) Le deuxième problème a été causé par un problème de dépendance. J'ai mis à jour le package nuget sur les deux côtés et tout semble correct, mais qui ne sont pas marqués de la dépendance a été hors de la synchronisation. Exemple:
Package Foo v1 références de la Barre de v1.
Il est possible de mettre à jour Foo et Bar à la v2 de manière indépendante, sans mise à jour de la référence.
Si vous installez les deux Foo et Bar v2 le service de référence de l'outil analyse Foo v2, voir la référence à la Barre de v1, et ne parviennent pas, car il ne peut pas trouver la version la plus ancienne.
Ce n'est rapporté correctement si vous mettez à jour les numéros de version de votre fichier dll pour tous les paquets.
Visual Studio et MSBuild n'auront aucun problème à la construction de l'application, mais le service de référence aura une terrible du temps à essayer de tout résoudre.
J'espère que cela aide quelqu'un.