Estoy tratando de hacer que la comunicación dúplex WCF funcione y estoy luchando porque sigo obteniendo "El InstanceContext brindado a ChannelFactory contiene un UserObject que no implementa el CallbackContractType"El InstanceContext proporcionado a ChannelFactory contiene un UserObject que no implementa el CallbackContractType
Sé que hay otras publicaciones sobre el tema, pero no pude relacionarlas con mi problema exacto, así que pensé en publicarlas.
Aquí está mi código.
Solo he incluido los bits que creo que son relevantes, pero házmelo saber si necesitas algo más.
Interfaz de host definiciones
[ServiceContract(CallbackContract = typeof(IDataCollectorCallback), SessionMode = SessionMode.Required)]
public interface IDataCollector
{
[OperationContract(IsOneWay = true)]
void GetData();
}
public interface IDataCollectorCallback
{
[OperationContract(IsOneWay = true)]
void returnData();
}
implementación del servicio
public class DataCollector : IDataCollector
{
public void GetData()
{
Console.WriteLine("Getting data");
Console.WriteLine("Waiting");
System.Threading.Thread.Sleep(10000);
Console.WriteLine("Sending Data back");
Callback.returnData();
}
IDataCollectorCallback Callback
{
get
{
return OperationContext.Current.GetCallbackChannel<IDataCollectorCallback>();
}
}
}
El código de cliente.
class Program
{
static void Main(string[] args)
{
// while (true)
//{
Console.WriteLine("Press enter to trigger data collection");
Console.ReadLine();
InstanceContext context = new InstanceContext(new MyCallback());
AshService.DataCollectorClient svc = new AshService.DataCollectorClient(context);
svc.GetData();
Console.WriteLine("awaiting data coming back");
Console.ReadLine();
//}
}
}
class MyCallback : IDataCollectorCallback
{
public MyCallback()
{
}
public void returnData()
{
Console.WriteLine("Got Data back from the server");
}
}
para obtener una referencia a la interfaz IDataCollector He incluido una referencia a la DLL en el proyecto de acogida. Me pregunto si aquí es donde radica mi problema. ¿Debo volver a encriptar la interfaz de devolución de llamada en la aplicación cliente?
Háganme saber si necesita algo más.
Saludos cordiales
Ash