WCF 4 ルーティング サービスを作成し、プログラムで構成しました。私のコードは、必要以上に間隔が空いています (他の人にとっての保守性が懸念されるため、コメントが必要です) が、確実に機能します。これには 2 つのフィルターがあります。1 つは特定のアクションを特定のエンドポイントにフィルター処理し、2 番目は残りのアクションを汎用エンドポイントに送信します。
        // Create the message filter table used for routing messages
        MessageFilterTable<IEnumerable<ServiceEndpoint>> filterTable = new MessageFilterTable<IEnumerable<ServiceEndpoint>>();
        // If we're processing a subscribe or unsubscribe, send to the subscription endpoint
        filterTable.Add(
            new ActionMessageFilter(
                "http://etcetcetc/ISubscription/Subscribe",
                "http://etcetcetc/ISubscription/KeepAlive",
                "http://etcetcetc/ISubscription/Unsubscribe"),
            new List<ServiceEndpoint>()
            {
                new ServiceEndpoint(
                    new ContractDescription("ISubscription", "http://etcetcetc/"),
                    binding,
                    new EndpointAddress(String.Format("{0}{1}{2}", TCPPrefix, HostName, SubscriptionSuffix)))
            },
            HighRoutingPriority);
        // Otherwise, send all other packets to the routing endpoint
        MatchAllMessageFilter filter = new MatchAllMessageFilter();
        filterTable.Add(
            filter,
            new List<ServiceEndpoint>()
            {
                new ServiceEndpoint(
                    new ContractDescription("IRouter", "http://etcetcetc/"),
                    binding,
                    new EndpointAddress(String.Format("{0}{1}{2}", TCPPrefix, HostName, RouterSuffix)))
            },
            LowRoutingPriority);
        // Then attach the filter table as part of a RoutingBehaviour to the host
        _routingHost.Description.Behaviors.Add(
            new RoutingBehavior(new RoutingConfiguration(filterTable, false)));