2009-05-20 31 views
7

Konsol uygulamasında basit bir web hizmeti oluşturuyorum. (PersonService) bu benim Program.cs'ım aşağıdakiBir konsol uygulamasına web hizmeti başvurusu ekleme

'un altındadır ve farklı bir konsol uygulamasına (PersonClient) servis referansı eklemeyi denerim nasıl yapabilirim? Sağ tıklatarak, servis referansı ekleyerek, referansa işaret ederek vs… eklemeye çalıştım ama işe yaramıyor.

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


      } 
     } 

cevap

0

ServiceHost'u çalıştıran iki konsol var, bu doğru mu? Sunucu konsolunu hata ayıklamadan çalıştırın; daha sonra IDE'de WCF referansını url'ye ekleyin. Çalışır, ancak mex'i sorguladığınızda sunucunun (ikinci konsol exe'niz) çalışması gerekir.

+0

Merhaba Marc, Dediğin ben yaptım ve ne i adresini çekti: http: // localhost: 9090/PersonService ve bu hata veriyor: 'http indirirken bir hata oluştu : // localhost: 9090/PersonService'. İstek, HTTP durumu 400: Hatalı İstek ile başarısız oldu. Meta veriler, çözümlenemeyen bir başvuru içerir: 'http: // localhost: 9090/PersonService'. Meta veriler, çözümlenemeyen bir başvuru içerir: 'http: // localhost: 9090/PersonService'. Servis mevcut çözümde tanımlanmışsa, çözümü oluşturmayı ve hizmet referansını tekrar eklemeyi deneyin. – raklos

+0

Çalışıyorken, web tarayıcınızda servis uri'ye göz atmayı deneyin. Size mex'in nasıl kurulacağını söyleyen servis sayfasını verebilir; Yine de başımın üstünden hatırlayamıyorum. –

+0

hizmeti çalışırken http: // localhost: 9090/PersonService işaret ettiğinde bir sayfa bulunamadı. – raklos

0

Web hizmeti referansı eklediğinizde, hizmet için ad alanını ve 'sınıf adını' tanımladınız. Ad alanı başvurusunu ("FooNameSpace;" kullanarak) eklemeli veya hizmetin tam olarak nitelenmiş sınıf adını kullanmalısınız ("FooNameSpace.BarClass ws = new FooNameSapce.BarClass()");

11

Çözüm:

  1. görsel stüdyo kullanarak bir konsol uygulaması oluşturun.
  2. Projeye sağ tıklayın ve "Servis Referansı Ekle ..." ye tıklayın.
  3. Pencerede, alttaki "Gelişmiş" tuşunu bulacaksınız.
  4. Düğmeye tıkladığınızda servis referans ayarları penceresi açılır. Altında "Web Referansı Ekle" adlı bir düğme var.
İlgili konular