Contrat invalide attribut pour IMetadataExchange
J'ai mis à jour un Service WCF .NET Framework 4.5. Après cela, j'ai remarqué un bleu ligne sinueuse autour de la IMetaDataExchange
dans le fichier de configuration de l'hôte.
C'est ce que la section des services de la config ressemble:
<services>
<service behaviorConfiguration="MyBehavior" name="MyServiceHost">
<endpoint binding="wsHttpBinding" bindingConfiguration="noSecurityBinding" contract="MyServiceContract"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
Quand j'ai placez le pointeur de la souris sur IMetadataExchange
le message d'erreur indique:
Le "contrat" de l'attribut n'est pas valide, La valeur "IMetadataExchange' est pas valide selon son type de données 'serviceContractType' - L'Énumération contrainte échoué.
Le service semble bien fonctionner. Donc, je suis curieux de savoir pourquoi est-ce invalide.
Vous devez vous connecter pour publier un commentaire.
Pouvez-vous supprimer .SUO (les Utilisateurs de la solution de l'Option de fichier) fichier après la fermeture de VS? Ceci permet de réinitialiser le cache pour XMLEditor composant dans VS et résoudre votre problème.
J'ai ajouté du Système.ServiceModel les références pour le projet et il s'en alla
J'ai eu un problème similaire à ce - plusieurs
name
etcontract
attributs montrant dans l'Application.Config de mon Service WCF avec le bleu redouté ondulés, et les avertissements d'apparaître dans la Liste d'Erreurs.Dans mon cas, le problème était que, après la création de services et les contrats que j'avais refait les espaces de noms du projet de service, de sorte que la solution générée spécifiques *.xsd a été en utilisant les nouveaux espaces de noms, mais mon outil de refactoring n'avais pas mis à jour l'Application.Config avec les changements. Et en ajoutant les espaces de noms spécifié résolu le problème.
Peut-être pas la réponse pour l'OP, mais d'autres avec ce problème doit vérifier que
[ServiceContract]
est déclaré pour lainterface
de vos services, car cela produit l'erreur exacte.SI vous exécutez Intellisense sur l'avertissement. Il fera apparaître une liste pour vous de choisir, vous pouvez appeler Explicitement que membre.
Si la suppression de l' .SUO fichier ne fonctionne pas, vérifier vos références pour vous assurer que vous avez le Système.ServiceModel de référence. Qui a fini par être la question qui m'a amené ici.
De clôture VS2013 Prof, le retrait de la "obj" dossier et de le recompiler a fait le travail pour moi.
J'ai trouvé le problème pour que le contrat d'attribut est sensible à la casse.
J'ai eu une autre solution qui a référencé le même service, mais n'a pas toutes les mises en garde dans l'application.config. j'ai couru à comparer dans notepad++ sur le système.serviceModel section de l'app.config et il a mis en évidence la différence entre les deux contrat attributs.
dès que j'ai modifié le contrat attribut à la bonne sensibles à la casse de l'orthographe l'alerte a aussitôt
J'ai résolu le problème.
Si jamais vous changez de classe C# en Service1.cs et IService1.cs. Également mettre à jour le nom de l'attribut dans l'élément de service "<noms>.<classname>" et le contrat d'attribut dans la endpoind élément "<noms>.<classname>" dans votre Application.config.
BTW. désolé pour le mauvais anglais 🙂
J'ai eu le même problème sur le côté client. Pour moi la solution a été de supprimer et d'ajouter le service de référence de nouveau.
Pourrait-il être que vous avez perdu vos références lorsque vous avez mis à niveau le projet? J'ai remarqué cette erreur lors de mon projet avec mon client n'a pas de référence à mon projet avec mon service.