La valeur n'est pas valide selon son type de données 'clientcontracttype'
j'obtiens un message d'erreur disant:
l'attribut contract n'est pas valide. la valeur n'est pas valide selon son type de données 'clientcontracttype'
Voici la configuration des paramètres dans web.config de cette application WCF. J'utilise .net Framework 4.5 et Visual Studio 2012.
J'ai vérifié le contrat OnlineReporting.Core.Contracts.IReportingInternalWcfPortal
est déjà là.
<endpoint address="http://localhost:63817/ReportingInternalWcfPortal.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding"
contract="OnlineReporting.Core.Contracts.IReportingInternalWcfPortal"
name="ReportingInternalPortal" />
7 réponses
je vois cette question est assez vieux et je ne sais pas si vous avez trouvé une solution, mais juste au cas où, c'est ce que j'ai trouvé les résoudre:
1) dans L'Explorateur de solutions, sous le dossier des références de Service, cliquez avec le bouton droit de la souris sur le nom de la référence de service avec la question et sélectionnez "Configurer la référence de Service".
2) la fenêtre Paramètres de référence du Service s'affichera. Décochez la case intitulée 'types de réutilisation dans les assemblages référencés' et cliquez sur OK bouton.
3) Reconstruire le projet.
Après la reconstruction, l'avertissement doit disparaître.
j'ai trouvé cette question à la recherche de la même erreur sur un projet de service web.
dans mon cas, cette erreur s'est produite quand j'ai oublié d'ajouter le [ServiceContract]
attribut IServiceBase
interface.
dès que je l'ai ajouté dans l'erreur a disparu.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace MyService
{
[ServiceContract]
public interface IServiceBase
{
[OperationContract]
IEnumerable<ListItem> GetListItems();
[OperationContract]
void SaveListItems(IEnumerable<ListItem> listItems);
}
la même erreur se produit lorsque vous manquez une référence [dans le projet avec le .config] à la bibliothèque/projet contenant l'interface/le contrat de service...
dans mon cas, j'ai modifié le contrat de Service en supprimant involontairement une interface qui était la clé du contrat de service.
des semaines plus tard, j'ai trouvé un client brisé avec une référence de service périmée. Depuis la suppression de l'interface était dans l'erreur, je le remets.
une autre solution possible serait d'avoir reconstruit la référence de service pour correspondre au nouveau contrat de service (dans mon cas aurait cassé la construction du projet puisque l'interface référencée avait été supprimés).
merci à OrangeKing89 de m'avoir indiqué la bonne direction. Je savais que le contrat de services pouvait être modifié.
je me rends compte que c'est un vieux fil, mais dans mon cas, le problème était que quelqu'un avait à un moment donné ajouté une référence de service au projet, et a ensuite décidé de prendre une autre route, mais l'entrée est restée dans le web.config, donc il suffit de supprimer cette entrée dans le web.config résolu le problème pour moi.
Dans mon cas, j'ai eu un conflit de noms.
lorsque vous ajoutez une référence de service, visual studio génère une classe client comme un proxy qui implémente le contrat, le nom par défaut de ce proxy est le nom du service ajouté par "Client" donc si votre service est "MyService" la classe client serait "MyServiceClient".
mon problème était que mon nom de projet était" MyServiceClient"! ce qui a causé ce conflit.
je sais que cette question Est ancienne, mais j'ai rencontré le même problème avec C# et Visual Studio 2017. Tout fonctionnait et compilait bien, alors ce n'était pas le cas. J'ai déclassé de .Net 4.6.2 à 4.6, comme SQLite v108 ne supporte pas 108, puis j'ai reçu cette erreur et d'autres. Ça m'a pris un peu de temps pour trouver une solution. Je n'ai vu ma solution nulle part, donc j'ai pensé que je la place là-bas pour l'avenir.
j'ai supprimé ma référence de service, j'ai vérifié toutes mes les changements de TSF, et ensuite ajoutée la référence de service. J'ai alors construit la solution et tout allait bien à nouveau.
j'ai vérifié l'application.config et d'autres fichiers et tout semblait bien, mais n'a pas été construit. Évidemment, VS2017 introduit des informations de version .Net quelque part, mais pas de façon évidente.
J'espère que ma solution aidera quelqu'un.