3

ルーティングがバックアップリストのエンドポイントを使用したときにログに記録できるように、WCFルーティングリストにログまたは動作を追加する方法はありますか?

     <filterTables>
        <filterTable name="RoutingTable">
          <add filterName="Filter1" endpointName="EP1" priority="0" backupList="FailOver"/>
        </filterTable>
      </filterTables>
      <backupLists>
        <backupList name="FailOver">
          <add endpointName="EP2" />
        </backupList>
      </backupLists>

動作は、ルーティングサービスによって最終的に使用されたエンドポイントを何らかの形でログに記録できますか?

4

1 に答える 1

0

サービス動作(またはエンドポイント動作とすべてのエンドポイントでの動作の構成)を作成してみてください

メッセージインスペクターを接続するIClientMessageInspector

コンストラクターでエンドポイントを渡します

メッセージとエンドポイントをBeforeSendRequestメソッドに記録します

public class MyClientMessageInspector : IClientMessageInspector
{
    private ServiceEndpoint _endpoint;

    public MyClientMessageInspector(ServiceEndpoint endpoint)
    {
        _endpoint = endpoint;
    }

    public object BeforeSendRequest(ref Message request, IClientChannel channel)
    {
        Log(request, _endpoint);
        return null;
    }

    public void AfterReceiveReply(ref Message reply, object correlationState)
    {
        //no-op
    }
}

次に、インスペクターをビヘイビアーに適用し、ルーターに接続します

于 2012-10-18T09:30:17.837 に答える