2009-05-20 10 views
7

Im creare un semplice servizio Web in un'app console. (PersonService) questo è il mio Program.cs sottoaggiungere un riferimento al servizio Web a un'app console

sto cercando di aggiungere un riferimento di servizio a un'altra app di console (PersonClient) come posso fare questo? ho provato ad aggiungerlo facendo clic con il pulsante destro del mouse, aggiungendo riferimento al servizio, indicando il refernce ecc ... ma non funzionerà.

 [DataContract] 
     public class Person 
     { 
      [DataMember] 
      public string FirstName { get; set; } 

      [DataMember] 
      public string LastName { get; set; } 

     } 

     [ServiceContract] 
     public interface IPersonLookup 
     { 
      [OperationContract] 
      Person GetPerson(int identifier); 
     } 

     public class PersonService : IPersonLookup 
     { 
      public PersonService() 
      { 
      } 
      public Person GetPerson(int identifier) 
      { 
       Person p = new Person(); 
       p.FirstName="Jane"; 
       p.LastName="Doe"; 
       return p; 
      } 



     } 


     class Program 
     { 
      static void Main(string[] args) 
      { 
       using (ServiceHost host = new ServiceHost(typeof(PersonService))) 
       { 
        WSHttpBinding binding = new WSHttpBinding(); 
        host.AddServiceEndpoint(typeof(IPersonLookup), binding, "http://localhost:9090/PersonService"); 
        host.Open(); 
        Console.WriteLine("Listening...."); 
        Console.ReadLine(); 
       } 


      } 
     } 

risposta

0

Si dispone di due console exe, una che esegue un ServiceHost - è quella corretta? Eseguire la console del server senza eseguire il debug; quindi nell'IDE aggiungere il riferimento WCF all'URL. Dovrebbe funzionare, ma è necessario che il server (il secondo exe della console) sia in esecuzione quando si esegue una query su mex.

+0

Hi Marc, Ho fatto quello che ha detto e indicai indirizzo: http: // localhost: 9090/PersonService e dà questo errore: C'è stato un errore di scaricare 'http: // localhost: 9090/PersonService'. Richiesta non riuscita con stato HTTP 400: Richiesta non valida. I metadati contengono un riferimento che non può essere risolto: 'http: // localhost: 9090/PersonService'. I metadati contengono un riferimento che non può essere risolto: 'http: // localhost: 9090/PersonService'. Se il servizio è definito nella soluzione corrente, provare a creare la soluzione e aggiungere nuovamente il riferimento del servizio. – raklos

+0

Quando è in esecuzione, provare a navigare nel servizio uri nel browser web. Potrebbe darti la pagina del servizio che ti spiega come configurare mex; Non riesco a ricordare la parte superiore della mia testa, però. –

+0

quando punto a http: // localhost: 9090/PersonService mentre il servizio è in esecuzione, fornisce una pagina non trovata. – raklos

0

Quando è stato aggiunto il riferimento del servizio Web, è stato definito lo spazio dei nomi e il nome della classe per il servizio. È necessario aggiungere il riferimento allo spazio dei nomi ("using FooNameSpace;") o utilizzare il nome classe completo del servizio ("FooNameSpace.BarClass ws = new FooNameSapce.BarClass()");

11

Soluzione:

  1. creare un'applicazione console utilizzando Visual Studio.
  2. Fare clic con il tasto destro del mouse sul progetto e fare clic su "Aggiungi riferimento servizio ...".
  3. Nella finestra, troverete il pulsante "Avanzate" in basso.
  4. Fare clic sul pulsante per aprire la finestra delle impostazioni di riferimento del servizio. Ha un pulsante in fondo chiamato "Aggiungi riferimento Web".