2009-07-22 19 views
0

私は、クライアントがユーザー情報を検索できるサービスを作成しました。これはインターフェイスISearchUsersとして公開されます。1エンドポイント複数のservicecontracts - wcf?

私はベースとしてではなく、無駄にこの記事を使用:これは link text

を移動するための方法であれば今、私はICreateUserと呼ばれるインターフェイスを作成し、公開したいと私は私が作成しなければならなかったことを前提とわかりません新しいエンドポイント、basicHttpバインディングを使用し、上記の記事を使用しました。

これは私の設定の一部です:

<services> 
     <service behaviorConfiguration="Service.Service1Behavior" 
     name="Service.SearchService"> 
     <clear /> 
     <endpoint binding="basicHttpBinding" bindingConfiguration="WsHttpMtomBinding" 
      contract="Service.ISearchService" listenUriMode="Explicit"> 
      <identity> 
      <dns value="localhost" /> 

      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" 
      listenUriMode="Explicit"> 

     </endpoint> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8731/Service/Service1/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
+0

私はあなたがこの間違った方法を見ていると思います。多分あなたが必要とするのは、SearchUsersとCreateUserのためのメソッドを扱うための複数のOperation Contractsを持つインターフェースIUserServiceのためのServiceContractです。 –

+0

Jose:ISearchUserは、サービスがまだ別のWebサービスによって実行されている古いレガシーデータベースのいずれかに基づいてユーザーを検索する4つの方法を提供しています...私の意見では、クラスタ%^ *ですが、それで、私は、私は、createuser、updateuser、removeuserにメソッドを公開する新しいインターフェースICreateUserを作成すると考えた。 –

答えて

0

あなたはISearchUserを実装して、あなたの現在のサービスクラスを拡張し、それは同様ICreateUserを実装させることができます - その場合、あなたはあなたのサービスの設定に第2のエンドポイントを追加することができます:

<services> 
    <service name="Service.SearchService" 
      behaviorConfiguration="Service.Service1Behavior"> 
    <host> 
     <baseAddresses> 
      <add baseAddress="http://localhost:8731/Services/" /> 
     </baseAddresses> 
    </host> 
    <endpoint 
      address="SearchUser" 
      binding="basicHttpBinding" bindingConfiguration="WsHttpMtomBinding" 
      contract="Service.ISearchService"> 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint 
      address="CreateUser" 
      binding="basicHttpBinding" bindingConfiguration="WsHttpMtomBinding" 
      contract="Service.ICreateUserService"> 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 

それらが一致する必要があります.....最も可能性の高いあなたのケースでは動作しません一つのことは、あなたが結合として「basicHttpBindingを」ピック事実ですが、bindingConfigurationはWsHttpBidningを示すように思われるので、おそらく:

<endpoint 
    address="CreateUser" 
    binding="basicHttpBinding" bindingConfiguration="basicHttpMtomBinding" 
    contract="Service.ICreateUserService"> 

マルク・

+0

marc_s:あなたの推薦に従った。コードをコンパイルして実行すると、WCFサービスホストが起動します。これがエラーです。 System.InvalidOperationException: 'SearchService'サービスによって実装されているコントラクトの一覧に、コントラクト名 'Service.IRegisterationService'が見つかりませんでした。 at System.ServiceModel.Description.ConfigLoader.LookupContract(String contractName、String serviceName) at ... –

+0

追加情報があるかどうかわかりません。 app.configを右クリックし、wcf設定の編集を選択します。 UIを表示します。 'services'を展開し、 'service.searchservice'を右クリックします。次に、名前の下の '...'をクリックし、binディレクトリからコンパイルされたdllを選択します。あなたが選ぶことができる2つのサービスタイプがあります –

+0

あなたのクラス "SearchService"は実際に "Service.IRegistrationService"契約を実装していますか? –

関連する問題