1

NetFX Harmonicsにあるスケーラブルなwcfソリューションを実装しようとしています:合理化された、簡素化された、スケーラブルなWCF接続の作成

だから私のソリューションには4つのプロジェクトがあります

  • Contact.Service(サービスおよびデータ契約)
  • Contact.ServiceImpl(HostFactoryおよびサービス自体)
  • Contact.ServiceHost(Web.configおよびPerson.svc)
  • Contact.ServiceClient

Contact.ServiceClientには、実際にサービスを呼び出すApp.configとProgram.csがあります。

App.config

<configuration> 
  <appSettings>
    <add key="PersonServiceActiveEndpoint" value="PersonServiceBasicHttpBinding" />
  </appSettings>    
  <system.serviceModel>
    <client>
      <endpoint name="PersonServiceBasicHttpBinding"
                address="http://localhost:1031/Person.svc"
                binding="basicHttpBinding"
                contract="Contact.Service.IPersonService" />
    </client>
  </system.serviceModel>  
</configuration>

Program.cs

  BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
            EndpointAddress endpointAddress = new EndpointAddress("http://localhost:1031/Person.svc");
            IPersonService personService = new ChannelFactory<IPersonService>(basicHttpBinding, endpointAddress).CreateChannel();

            Person person = personService.GetPersonData("F488D20B-FC27-4631-9FB9-83AF616AB5A6");
            Console.WriteLine(person.FirstName);

この例を実行しようとすると、例外がスローされます。

メッセージを受け入れることができるhttp:// localhost:1031/Person.svcでリッスンしているエンドポイントはありませんでした。これは多くの場合、誤ったアドレスまたはSOAPアクションが原因で発生します。

PSPerson.svcは私のContact.ServiceHostプロジェクトにあります

<%@ ServiceHost Service="Contact.Service.PersonService" %>
4

1 に答える 1

0

サービスホストの構成は何ですか?2つの問題のいずれかのように聞こえます:

  • サービスホストが同じポートでリッスンするように設定されていません。
  • ホストアプリケーションがまったく実行されていません

サービスホストプロジェクトのweb.configを確認すると、別のポートでリッスンしているか、まったく実行されていないため、リッスンしていないことがわかると思います。

Visual Studioホストが起動してサービスをホストしていますか?通常、時計の横の通知領域に、ホストが実行されていることを示す小さな「トースト」ポップアップウィンドウが表示され、ホストが実行されているポートを確認できます。これが発生していない場合は、クライアントだけでなくホストプロジェクトも開始するように構成する必要がある可能性があります。

クライアントとサーバーの両方を同時に起動できるようにするには、次のことを行う必要があります。

  • ソリューションファイルを右クリックし、[スタートアッププロジェクトの設定...]を選択します。
  • [複数のスタートアッププロジェクト]を選択し、クライアントおよびサーバープロジェクトに対して[開始]を選択し、他のプロジェクトは[なし]に設定したままにします。
于 2012-02-08T20:20:33.507 に答える