2010-06-04 7 views
0

J'ai créé une classe de bibliothèque proxy dans la solution de service en référençant également l'assembly de contrat et copié les bibliothèques (contrat, proxy) dans un autre dossier de solution. Puis référencé les bibliothèques Proxy, Contract et System.ServiceModel dans une autre bibliothèque de classes où j'ai besoin d'utiliser la méthode one contenue, ainsi que d'ajouter un App.Config à l'intérieur de la bibliothèque.Impossible de trouver l'élément de point de terminaison par défaut ... dans WCF Client

Le service est hébergé dans une application Windows Forms. Le client est une bibliothèque de classes appelée depuis une application Windows Forms. Je n'ai pas créé de App.Config dans le projet de formulaire Windows. En fait, le projet Windows Form charge un contrôle dans une bibliothèque et le contrôle charge la bibliothèque dans laquelle j'ai besoin d'utiliser la méthode de service. Donc je pensais que je devrais seulement référencer le (contrat et proxy) dans la dernière assemblée puisque je ne l'utiliserai nulle part ailleurs.

Mais je continue à obtenir cette erreur:

Could not find default endpoint element that references contract 'Sign.Contracts.ISignDocument' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.

App.Config en libray appelant le proxy:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
    <services> 
     <client> 
     <endpoint 
      address="http://localhost:8731/SignHere" 
      binding="basicHttpBinding" 
      contract="Sign.Contracts.ISignDocument" /> 
     </client> 
    </services> 
    </system.serviceModel> 
</configuration> 

App.Config en service Host:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
    <services> 
     <service name="Sign.Service.SignDocumentService"> 
     <endpoint 
      address="http://localhost:8731/SignHere" 
      binding="basicHttpBinding" 
      contract="Sign.Contracts.ISignDocument" /> 
     </service> 
    </services> 
    </system.serviceModel> 
</configuration> 

Proxy Classe:

namespace Sign.Proxies 
{ 
    public class Proxy : ClientBase<ISignDocument>, ISignDocument 
    { 
     public string SignDocument(string document) 
     { 
      return Channel.SignDocument(document); 
     } 
    } 
} 

la classe du contrat:

namespace Sign.Contracts 
{ 
    [ServiceContract] 
    public interface ISignDocument 
    { 
     [OperationContract] 
     string SignDocument(string document); 
    } 
} 

Toutes les idées?

+1

Pour mettre en forme du code ou du code XML, sélectionnez-le dans l'éditeur et appuyez sur Ctrl-K. –

Répondre

1

Un programme ne possède qu'un seul fichier de configuration. Dans votre cas, c'est le fichier app.config du programme Winforms, qui est copié dans programName.exe.config lors de la construction du programme.

Toute configuration WCF doit être dans ce fichier. Le fait que votre bibliothèque possède un app.config n'a pas d'importance. Vous devez copier les entrées de configuration appropriées à partir du fichier app.config de la bibliothèque et les fusionner avec le fichier app.config de l'application Winforms.

+0

Ajout d'un fichier App.Config dans le projet winform et j'obtiens la même erreur. – AlwaysBeCoding

+0

Ce n'est pas le problème. Vous devez copier la configuration WCF de app.config de votre bibliothèque dans app.config dans l'application Winforms. –

+0

oui, désolé c'est ce que je voulais dire, j'ai créé un fichier App.Config dans l'application winforms et copié le contenu. – AlwaysBeCoding

1

doooh ... il n'y a pas d'élément parent pour les informations de point de terminaison client dans le client app.config.

Questions connexes