¿Por qué obtengo InvalidCastException de OperationContext.Current.GetCallbackChannel <> ()

Para habilitar las devoluciones de llamadas aysc a los clientes, debo agregar los métodos de inicio / finalización a la interfaz que se define como CallbackContract en mi servicio.(Estoy usando un ensamblado de contrato cizallado, en lugar de generar clases proxy)

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

Como primer paso tengosolo copiado la interfaz IClient desde el conjunto de la interfaz compartida a un espacio de nombres local, sin realizar ningún otro cambio. Yo esperaría que como la interfaz eslógicamente Al igual que lo que está en el contrato, WCF permitirá que se utilice.Sin embargo WCF no le gusta por alguna razón, ¿por qué?

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

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

Sin embargo, si solo uso la interfaz IClient original del conjunto de contrato compartido, ¡todo funciona!

Respuestas a la pregunta(2)

Su respuesta a la pregunta