2009-05-20 10 views
7

コンソールアプリケーションで簡単なWebサービスを作成しています。 (PersonService) これは私のProgram.cs以下コンソールアプリケーションにWebサービスリファレンスを追加

私はこれを行うことができます別のコンソールアプリケーション(PersonClient)にサービス参照を追加しようとしていますか? 私はそれを右クリックして追加しようとしましたが、サービス参照を追加して参照などを指していました... しかし、それはうまく動作しません。

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


      } 
     } 

答えて

2

WCF MEXエンドポイントについて読む必要があります。ここにはblog post that may helpがあります。

+0

ありがとうございました – raklos

+0

私は助けてくれると嬉しいです。 – RichardOD

0

ServiceHostを実行している2つのコンソールエグゼがありますか?デバッグせずにサーバーコンソールを実行します。 IDEでWCF参照をURLに追加します。それは動作するはずですが、mexを照会するときに実行されるサーバー(2番目のコンソールEXE)が必要です。

+0

こんにちはマルク、 は、私はあなたが言ったことをやったと 私は、アドレスを指摘します。http:// localhost:9090/PersonService 、それは、このエラーを与える: 「HTTPのダウンロードにエラーが発生しました:// localhostを:9090/PersonService '。 要求がHTTPステータス400:Bad Requestで失敗しました。 メタデータに「http:// localhost:9090/PersonService」という解決できない参照が含まれています。 メタデータに「http:// localhost:9090/PersonService」という解決できない参照が含まれています。 サービスが現在のソリューションで定義されている場合は、ソリューションを構築し、サービス参照を再度追加してください。 – raklos

+0

実行中は、WebブラウザでサービスURIを参照してみてください。 mexを設定する方法を示すサービスページが表示されます。私は頭の上から覚えていない。 –

+0

私はhttp:// localhost:9090/PersonServiceを指していますが、サービスの実行中はページが見つかりません。 – raklos

0

Webサービス参照を追加したときに、サービスの名前空間と「クラス名」を定義しました。名前空間参照( "FooNameSpaceを使用する")を追加するか、サービスの完全修飾クラス名( "FooNameSpace.BarClass ws = new FooNameSapce.BarClass()")を使用する必要があります。

11

ソリューション:

  1. のVisual Studioを使用して、コンソールアプリケーションを作成します。
  2. プロジェクトを右クリックし、[Add Service Reference ...]をクリックします。
  3. ウィンドウには、下部に「詳細設定」ボタンがあります。
  4. ボタンをクリックすると、サービス参照設定ウィンドウが開きます。下部には「Web参照の追加」というボタンがあります。
関連する問題