GetEndpointName
現在のインターセプタ エンドポイントの名前をスタックにプッシュします。
<wcf:Operation Name="GetEndpointName" />
[なし] :
現在のインターセプタ エンドポイント名を含む文字列。
クライアント アプリケーションおよびサーバー アプリケーションは、App.config ファイルで指定されている同じエンドポイント名に対して異なる名前を返します。
クライアント アプリケーションの場合、GetEndPointName 操作で取得されるエンドポイント名はバインド名で、その後にアンダースコアとコントラクト名が続きます。
たとえば、ServiceEndpoint の Name プロパティが設定されていないが、バインドが設定されている場合、名前は binding>_<contract> に<設定されます。
名前とバインドが設定されていない場合、Name プロパティは contract> に<設定されます。
サーバー アプリケーションの場合、App.config ファイルで指定されているエンドポイント名が取得されます。
次に例示するフィルタ式では、PurchaseOrder_EP エンドポイントの ServiceRequest コントラクト呼び出しポイントについて、受信操作のインターセプタを定義します。 これは、次のような論理的な手順によって実行します。
現在の操作名を "Receive" と比較し、結果 ("true" または "false") をスタックにプッシュします。
現在のサービス コントラクト呼び出しポイントを "ServiceRequest" と比較し、結果 ("true" または "false") をスタックにプッシュします。 この段階で、スタックには 2 つのブール値が存在します。
Boolean And 操作を使用して前の手順の結果を比較し、結果をスタックにプッシュします。 この段階で、スタックには 1 つのブール値が存在します。
現在のエンドポイントを "PurchaseOrder_EP" と比較し、結果 ("true" または "false") をスタックにプッシュします。 この段階で、スタックには 2 つのブール値が存在します。
最後に、Boolean And 操作を使用してスタック上の 2 つのブール値を比較し、結果をスタックにプッシュします。 これにより、ブール値に対してエンドポイント比較の結果がチェックされ、操作名とコントラクト呼び出しポイントが一致すれば true、それ以外の場合は false が返されます。
<ic:Filter>
<ic:Expression>
<wcf:Operation Name="GetOperationName" />
<ic:Operation Name="Constant">
<ic:Argument>Receive</ic:Argument>
</ic:Operation>
<ic:Operation Name="Equals" />
<wcf:Operation Name="GetServiceContractCallPoint" />
<ic:Operation Name="Constant">
<ic:Argument>ServiceRequest</ic:Argument>
</ic:Operation>
<ic:Operation Name="Equals" />
<ic:Operation Name="And" />
<wcf:Operation Name="GetEndpointName" />
<ic:Operation Name="Constant">
<ic:Argument>PurchaseOrder_EP</ic:Argument>
</ic:Operation>
<ic:Operation Name="Equals" />
<ic:Operation Name="And" />
</ic:Expression>
</ic:Filter>