2016-05-28 2 views
0

私はWCFプロジェクトを担当しています。ここでエンドポイントが設定ファイルで定義されているときにプロキシチャンネルを開く方法は?

は契約です:

[ServiceContract] 
interface IContract 
{ 
    [OperationContract] 
    string MethodTest(string s); 

    [OperationContract] 
    List<hydrants_log_maxtime> GetData(DateTime dateTime); 
} 

そして、ここでは、私は、サービスエンドポイントをホストへのアクセス方法です:

 IContract proxy = ChannelFactory<IContract>.CreateChannel(new BasicHttpBinding(), 
                new EndpointAddress("http://localhost/HydrantEvents/Hydrant.svc")); 

     using (proxy as IDisposable) 
     { 
      var rows = proxy.GetData(new DateTime(2000, 5, 1)); 
      var result = proxy.MethodTest("sss"); 
     } 

私は、ファイルをapp.configをするために、クライアント上のエンドポイントの定義を移動します。

<system.serviceModel> 
    <client> 
     <endpoint address="http://localhost/HydrantEvents/Hydrant.svc" 
       binding="wsHttpBinding" 
       contract="HydrantsEventsConsumer.IContract"/> 
    </client> 
    </system.serviceModel> 

私がエンドポイントの定義をコンフィグファイルに移動したとき、プロキシcを開く方法がわかりません私が.configファイルで定義したプロキシインスタンスを持っていないので、サービスホストと通信するhannel。

エンドポイントが設定ファイルで定義されているときにプロキシチャネルを開く方法は?

+0

Visual Studioにハードワークをさせることは可能ですか?参照を右クリックしてService Referenceを追加し、プロンプトでlocalhostアドレスを入力すると、クライアントを簡単に作成してサービスメソッドにヒットすることができるように、関連付けられたコードの設定がすべて作成されます。 –

+0

@TylerStandishMan、はい私はそれを手動で実装したいと思っています。 – Michael

答えて

0

設定ファイルの<endpoint>セクションにあるname属性に値を割り当ててから、オーバーロードとしてChannelFactory<T>を使用して、名前値を使用してプロキシを作成することができます。

<system.serviceModel> 
    <client> 
    <endpoint address="http://localhost/HydrantEvents/Hydrant.svc" 
       binding="wsHttpBinding" 
       contract="HydrantsEventsConsumer.IContract" 
       name="MyEndpoint" /> 
    </client> 
</system.serviceModel> 

IContract proxy = ChannelFactory<IContract>("MyEndpoint").CreateChannel(); 
関連する問題