2011-04-19 20 views
3

ChannelFactoryを使用して、特定のエンドポイント用のWCFクライアントを作成します。configが文字列内にある場合、新しいChannelFactory <TChannel>(文字列)を使用しますか?

問題は私にweb.configやapp.configはありませんが、文字列には<system.serviceModel>というXMLブロックがあります。

私は手動でそれを解析し、既に構成があるときにBIndingsとEndpointsをプログラムで作成したくありません。

ChannelFactoryにそのブロックを設定として使用するように指示する方法はありますか?または、少なくともServiceEndpointを作成しますか?手動のChannelFactoryのインスタンスを作成するために結合し、エンドポイントのアドレスを作成することができます

答えて

0

、のようなもの:

BasicHttpBinding binding = new BasicHttpBinding() { 
     Name = "Bindingname" 
     // Goes all the necessary members to set. 
    }; 

    EndpointAddress endpoint = new EndpointAddress("http://serviceendpoint.com"); 
    ChannelFactory<IContract> factory = new ChannelFactory<IContract>(binding, endpoint); 

次に、あなたのServiceEnpoint前のメンバーを探求するfactory.CreateChannel()を使用して試すことができ、行動など

こんにちは、このヘルプ、ありがとう。

+0

ありがとうございましたが、私は書いています。「私は手作業でそれを解析し、設定をしているときにプログラムでバインディングとエンドポイントを作成したくありません。私はすでにプログラム的な方法を使っていますが、 '' XMLブロックが既にあるので、コードの複製をやめたいと思っています。 –

+0

私は、すべての契約で 'ChannelFactory 'のインスタンスを作成する際のコードを減らすために、ジェネリックに変換するかもしれないと思いました。 –

1

this blog entryに記載されている技術があります。

1行のコードほど単純ではありませんが、少なくとも生のXMLよりも高いレベルで動作しています。

+1

それはうまくいった。私はそれが欲しいほど簡単ではありませんが、それは動作し、私に頭痛の多くを保存します。 –

関連する問題