Share via


<clientProviders> 要素 (インスタンス)

対象のチャネル テンプレートが構成ファイル内の別の場所から参照された場合に、そのチャネル テンプレートに対するクライアント側の既定のチャネル シンク呼び出しチェインに挿入されるチャネル シンクのプロバイダを指定します。下のいずれかの位置でプロバイダを指定すると、対象のチャネルの既定のチャネル シンクがオーバーライドされます。テンプレートのチャネル シンク呼び出しチェインに、これらの既定のチャネル シンクも挿入する必要がある場合は、それらの既定のチャネル シンクも同様にこの要素で指定する必要があります。

<configuration>
   <system.runtime.remoting>
      <channels>
         <channel>
**            <clientProviders>**

このレベルで指定されたプロバイダは、対象のチャネル テンプレートが参照されるたびに、そのチャネルの既定のプロバイダをオーバーライドします。

<configuration>
   <system.runtime.remoting>
      <application>
         <channels>
           <channel>
**               <clientProviders>**

このレベルで指定されたプロバイダは、対象のチャネル インスタンスに限り、その既定のプロバイダをオーバーライドします。

<clientProviders>
   <formatter/>
   <provider/>
</clientProviders>

子要素

要素 説明
<formatter> チャネル シンクの呼び出しチェインに挿入されるフォーマッタ シンクを指定します。<clientProviders> インスタンス要素内に 1 回だけ指定できます。
<provider> チャネル シンクの呼び出しチェインに挿入されるチャネル シンクを指定します。<clientProviders> インスタンス要素内に 1 回以上指定できます。

解説

上に示したレベルで参照または宣言されたプロバイダは、チャネル テンプレート要素内で使用された場合は、対象のチャネルが構成ファイルの別の場所で参照されたときに、そのチャネルの既定のプロバイダをオーバーライドして、自身が既定のプロバイダになります。この要素が指定された場合は、対象となるチャネルのすべての既定のプロバイダまたはフォーマッタがオーバーライドされます。カスタム プロバイダのほかに、これらの既定のプロバイダやフォーマッタもチャネル テンプレートの一部に含める場合は、それらも含めて、そのチャネルが別の場所から参照されたときに使用するすべてのプロバイダおよびフォーマッタを指定しておく必要があります。

チャネル インスタンス内で使用する場合は、上で示したレベルで参照または宣言されたプロバイダが、該当するチャネル インスタンスに限り、そのチャネルの既定のプロバイダをオーバーライドします。このインスタンスが、clientProviders を宣言するテンプレートを参照した場合は、宣言されているプロバイダも、ここで指定されたプロバイダによって完全にオーバーライドされます。

次の構成ファイルは、<channels> テンプレート要素を使用して、id が "httpbinary" の HttpChannel を宣言し、<clientProviders> テンプレート要素を使用して、リモート呼び出しをシリアル化する BinaryClientFormatterSink を指定しています。次に、<application> 要素内の <channel> インスタンス要素に ref="httpbinary" と指定することにより、クライアント アプリケーションが特定のチャネル構成を使用するように要求しています。最後に、<clientProviders> インスタンス要素を使用して "propsetter" チャネル シンク プロバイダを追加し、このチャネル シンク プロバイダによって使用されるカスタム構成要素をいくつか渡します。type 属性を使用してグローバル アセンブリ キャッシュにあるアセンブリ内の型を指定するには、バージョン、カルチャ、および公開キーの情報を含む完全な型情報が必要です。次の例の type 属性では、簡略にするためにこの情報が省略されています。

<configuration>
   <system.runtime.remoting>
      <channelSinkProviders>
         <clientProviders>
            <provider 
               id="propsetter" 
               type="ChannelSinkPropertySetterProvider, PropsSink" 
            />
         </clientProviders>
      <channels>
         <channel 
            type="System.Runtime.Remoting.Channels.Http.HttpChannel, System.Runtime.Remoting" 
            id="httpbinary"
         >
            <clientProviders>
               <formatter                   type="System.Runtime.Remoting.Channels.BinaryClientFormatterSinkProvider, System.Runtime.Remoting"
               />
            </clientProviders>
         </channel>
      </channels>
      <application>
         <channels>
            <channel ref="httpbinary">
               <clientProviders>
                  <provider 
                     ref="propsetter" 
                     username="somename" 
                     writeToConsole="true"
                  >
                     <endpoint url="contoso.com:9000" password="xyz" />
                     <endpoint url="contoso.com:9001" password="123" />
                  </provider>
               </clientProviders>
            </channel>
         </channels>
         <client>
            <wellknown 
               url="http://computername:80/RemoteType.rem"                type="RemoteType, RemoteAssembly"
            />
         </client>
      </application>
   </system.runtime.remoting>
</configuration>

必要条件

構成ファイル : アプリケーション構成ファイル、マシン構成ファイル (Machine.config)

参照

リモート処理設定スキーマ | シンクとシンク チェイン