2

カスタム バインドを作成しましたが、App.config で構成できるようにしたいと考えています。

現時点ではバインディングに特別なオプションはありません。

<endpoint address="http://myAddress" 
          binding="myBinding"
          contract="myContract">

いくつかのサイトをチェックした後、<BindingExtension>. ただし、追加しようとすると、MSDN サイトはあまり役に立ちませんでした。

<extensions>
  <bindingExtensions>
    <add name="myBinding" 
         type="MyNamespace.MyHttpBinding, NameOfMyDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
  </bindingExtensions>
</extensions>

、プログラムを起動しようとすると、次のエラー メッセージしか表示されません。

構成バインディング拡張 'system.serviceModel/bindings/myBinding' が見つかりませんでした。このバインディング拡張機能が system.serviceModel/extensions/bindingExtensions に正しく登録されていること、およびスペルが正しいことを確認してください。

bindingExtension で言及されている型は、 から継承する型を指していBindingます。

バインディングの構成サポートを有効にするには、何を追加する必要がありますか?


私の目標は、バインディングを構成ファイルにエクスポートできるようにすることです。バインディングに特別な設定を許可したくありません。<endpoint>構成ファイルのタグで使用できるはずです。

4

1 に答える 1

3

あなたは正しい方向に進んでいます。ただし、重要な点は、bindingExtension要素がバインディングクラス自体を直接指しているべきではないということです。

代わりに、構成モデルをサポートするいくつかのクラスが必要です。まず、登録するbindingExtensionは、実際にはStandardBindingCollectionElementから継承するクラスです。これは、 StandardBindingElementのコレクションを表します。これは、バインディングが.configファイルでサポートするすべての構成プロパティを持ち、Bindingインスタンスの作成と、.configで設定されたプロパティの設定を担当する構成クラスです。ファイル。

また、通常、TransportBindingElementの構成ビューを作成するための同様のパターン(トランスポートチャネルを実行している場合)に従って、構成を通じてそれを使用してカスタムバインディングを作成できることに注意してください。その場合、TransportElementを継承するクラスがあります。

PSたくさんの設定がある場合、これが非常に多くの反復コードであると考えているなら、私は同意します。

更新:問題が何であるかを見つけました:構成ファイルに少なくとも空の<bindings/>セクションが必要です。追加するだけで、バインディングが認識されます。

于 2009-08-26T19:36:32.927 に答える