2017-09-04 5 views
0

Ich habe eine verteilte Server-Anwendung.Erkennen, ob FaultException von Remote-Quelle ist

Ein Client verbindet sich mit einem Slave-Server und ruft eine Methode auf, die an den Master-Server weitergegeben wird. Der Master-Server wirft eine FaultException<CustomFault>().

Der Slave-Server propagiert das FaultException<CustomFault>() an den verbundenen Client dann. Aber der Client erhält stattdessen das nicht-generische FaultException.

Wenn ich ihn zu fangen und erneut auslösen (erstellen Sie eine neue Instanz von FaultException<CustomFault>) auf Slave-Server es wie erwartet funktioniert:

protected void Rethrow(Action action) 
    { 
     try 
     { 
      action(); 
     } 
     catch (FaultException<CustomFault> kEx) 
     { 
      throw new FaultException<CustomFault>(kEx.Detail); 
     } 
    } 

Daher nehme ich an, dass alle meine Schnittstellen korrekt eingerichtet sind. Ich kann nur davon ausgehen, dass Microsoft das Werfen von FaultExceptions über mehrere Server als Sicherheitsproblem betrachtet ...

Wie kann ich feststellen, dass die FaultException von einem anderen Server ausgelöst wurde? Überprüfen der Anrufliste für:

Server stack trace: 
    at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

scheint mir falsch. Irgendwelche besseren Ideen?

Antwort

0

Wenn jemand anderes hat das gleiche Problem:

Wenn die FaultException von einer entfernten Quelle ist - die Action Eigenschaft inidicates den Service!