Warum erhalte ich eine InvalidCastException von OperationContext.Current.GetCallbackChannel <> ()?

Um aysc-Rückrufe für die Clients zu aktivieren, muss ich die Begin / End-Methoden der Schnittstelle hinzufügen, die für meinen Service als CallbackContract definiert ist.(Ich verwende eine gescherte Vertragsassembly, anstatt Proxyklassen zu generieren.)

[ServiceContract(CallbackContract=typeof(IClient)]
interface IEngineManager

Als ersten Schritt habe ichgerade kopiert die IClient-Schnittstelle aus der gemeinsam genutzten Schnittstellenassembly in einen lokalen Namensraum, ohne weitere Änderungen vorzunehmen. Ich würde das als Schnittstelle erwartenlogisch WCF gestattet die Verwendung des Produkts wie im Vertrag festgelegt.Jedoch gefällt es der WCF aus irgendeinem Grund nicht, warum?

[ServiceContract]
public interface IClient
{
  [OperationContract(Action = "ReceiveMessage", 
     ReplyAction = "ReceiveMessageResponse")]
  void ReceiveMessage(SimMessage message);
}

//....
// this give the InvalidCastException
var client = OperationContext.Current.GetCallbackChannel<MyNameSpace.IClient>();

Wenn ich jedoch nur die ursprüngliche IClient-Schnittstelle aus der gemeinsam genutzten Vertragsassembly verwende, funktioniert alles!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage