2009-05-20 10 views
7

Tworzę prosty serwis internetowy w aplikacji konsolowej. (PersonService) To jest mój Program.cs poniżejdodaj odwołanie do usługi internetowej do aplikacji konsoli

próbuję dodać odwołanie do usługi do innej aplikacji konsoli (PersonClient) jak mogę to zrobić? próbowałem dodawać go, klikając prawym przyciskiem myszy, dodawać odwołanie do usługi, wskazując na refernce itp. ... , ale to nie zadziała.

 [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(); 
       } 


      } 
     } 

Odpowiedz

0

Masz dwóch konsoli exes, jeden z którego działa ServiceHost - czy to prawda? Uruchom konsolę serwera bez debugowania; następnie w IDE dodaj odwołanie WCF do adresu URL. Powinien działać, ale wymaga, aby serwer (twoja druga konsola exe) działał podczas wysyłania zapytania do mex.

+0

Cześć Marc, zrobiłem to, co powiedział i i wskazał adres: http: // localhost: 9090/PersonService i daje ten błąd: Wystąpił błąd podczas pobierania „http: // localhost: 9090/PersonService ". Żądanie nie powiodło się ze statusem HTTP 400: Złe żądanie. Metadane zawiera odniesienie, którego nie można rozwiązać: "http: // localhost: 9090/PersonService". Metadane zawiera odniesienie, którego nie można rozwiązać: "http: // localhost: 9090/PersonService". Jeśli usługa jest zdefiniowana w bieżącym rozwiązaniu, spróbuj zbudować rozwiązanie i ponownie dodać odwołanie do usługi. – raklos

+0

Po uruchomieniu spróbuj przejrzeć zawartość usługi uri w przeglądarce internetowej. Może podać stronę usługi, która mówi, jak skonfigurować mex; Nie pamiętam jednak z głowy. –

+0

, gdy wskażę http: // localhost: 9090/PersonService, gdy usługa jest uruchomiona, nie można znaleźć strony. – raklos

0

Po dodaniu odwołania do usługi internetowej zdefiniowano przestrzeń nazw i "nazwę klasy" dla usługi. Musisz dodać odwołanie do przestrzeni nazw ("using FooNameSpace;") lub użyć w pełni kwalifikowanej nazwy klasy usługi ("FooNameSpace.BarClass ws = new FooNameSapce.BarClass()");

11

Rozwiązanie:

  1. Tworzenie aplikacji konsoli przy użyciu visual studio.
  2. Kliknij prawym przyciskiem myszy na projekcie i kliknij "Dodaj odniesienie do usługi ...".
  3. W oknie znajduje się przycisk "Zaawansowane" u dołu.
  4. Kliknij przycisk i otworzy się okno ustawień referencji serwisowych. Na dole znajduje się przycisk "Dodaj odniesienie do strony internetowej".
Powiązane problemy