Wie kann ich das WCF -Routing erhalten, um mir eine detailliertere Fehlermeldung zu geben als - kein Übereinstimmung von MessageFilter?

StackOverflow https://stackoverflow.com/questions/6311423

  •  26-10-2019
  •  | 
  •  

Frage

Gibt es eine Möglichkeit, das WCF -Routing so zu konfigurieren, dass Sie, wenn Ihre Filter nicht übereinstimmen, weitere Informationen über die Nachricht erhalten, die nicht weitergeleitet werden konnten?

Derzeit verwenden wir AppFabric und erhalten nur die folgende Nachricht. Diese Nachricht ist nicht sehr hilfreich, wenn versucht wird, herauszufinden, welche Nachricht nicht mit einem Filter übereinstimmt.

No matching MessageFilter was found for the given Message.
War es hilfreich?

Lösung

Dies ist nicht die beste Lösung, ich habe einen Weg experimentiert, um zu überprüfen, ob ein Routing -Dienst als konfiguriert funktioniert, aber noch nicht den besten Weg gefunden hat.

Eine Möglichkeit besteht jedoch darin, einen Match -All -Filter bereitzustellen und einen Dienst zu haben, der alle Anfragen akzeptiert und sich anmeldet und einen 404 an den Client zurückgibt

    <routing>
        <filters>
            <filter name="Other" filterType="MatchAll" />
            <filter name="action1" filterType="Action" filterData="http://tempuri.org/action2" />
            <filter name="action2" filterType="Action" filterData="http://tempuri.org/action1" />
        </filters>
        <filterTables>
            <filterTable name="FilterTable">
                <add filterName="action1" endpointName="Service1" priority="1" />
                <add filterName="action2" endpointName="Service2" priority="1" />
                <add filterName="Other" endpointName="Logger" priority="0" />
            </filterTable>
        </filterTables>
    </routing>

Der Logger -Endpunkt verweist einfach auf einen einfachen Dienst, der eine Nachricht akzeptiert und sie protokolliert und einen 404 zurückgibt

Ein Psudo -Code:

[ServiceBehavior]
public class RoutingLogger : IYourInterface
{
    public System.ServiceModel.Channels.Message YourInterfaceMethod(System.ServiceModel.Channels.Message message)
    {
        LogMessage(message);
        return new Custom404Message();
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top