2015-07-31 1 views
0

J'ai trois classes DataContract dans le service wcf. J'ai ajouté une référence de service au client et deux de mes classes fonctionnent très bien, mais la troisième n'est pas apparue dans la référence du service. Je n'utilise pas cette classe dans mon interface de service, peut-elle être la raison de mon problème? Voici cette classe:L'une des classes DataContract ne génère pas du côté client en ajoutant une référence de service.

[DataContract] 
public class Security 
{ 
    public Security(){ } 

    public string Sha1(string input) 
    { 
     byte[] hash; 
     using (SHA1CryptoServiceProvider Sha1Provider = new SHA1CryptoServiceProvider()) 
     { 
      hash = Sha1Provider.ComputeHash(Encoding.Unicode.GetBytes(input)); 
     } 
     var sb = new StringBuilder(); 
     foreach (byte b in hash) sb.AppendFormat("{0:x2}", b); 
     return sb.ToString(); 
    } 
} 

S'il est important, j'ai ajouté une référence pour System.Security.Cryptography à mon client.

+0

Pouvez-vous fournir une partie du code du client lorsque cela est appelé? – MSumulong

Répondre

0

Si le contrat DataContract n'est pas exposé dans votre contrat de service, le client ne recevra pas le contrat de données car il n'est pas nécessaire.

Une explication plus robuste se trouvent sur cette question: DataContract not available at WCF client service reference

+0

En outre, cette classe ne ressemble pas beaucoup à un DataContract. Aucun DataMembers n'est défini. Il semble que vous essayez de transmettre une logique partagée à votre client enveloppé dans un DataContract. –

+0

D'accord, merci, c'est clair maintenant. En fait, j'ai juste besoin de cette classe de sécurité sur le client et sur le service, donc j'ai décidé de le partager comme ça au lieu de créer deux mêmes classes là-bas. Je pense, je vais mettre cette classe à la DLL maintenant. –