Por que recebo InvalidCastException de OperationContext.Current.GetCallbackChannel <> ()
Para habilitar callbacks do aysc para os clientes, eu preciso adicionar os métodos Begin / End à interface definida como o CallbackContract no meu serviço.(Estou usando um assembly de contrato fragmentado, em vez de gerar classes de proxy)
[ServiceContract(CallbackContract=typeof(IClient)]
interface IEngineManager
Como o primeiro passo que tenhoapenas copiado a interface IClient do assembly da interface compartilhada em um espaço de nome local, sem fazer nenhuma outra alteração. Eu esperaria que, como a interface élogicamente o mesmo que está no contrato, o WCF permitirá que ele seja usado.No entanto WCF não gosta por algum motivo, 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>();
No entanto, se eu usar a interface IClient original do assembly de contrato compartilhado, tudo funciona!