Я пытаюсь установить дуплексную связь WCF, работаю, и я изо всех сил пытаюсь получить "InstanceContext, предоставляющий ChannelFactory, содержит UserObject, который не реализует CallbackContractType"
Я знаю, что есть другие сообщения по темено не мог связать их с моей конкретной проблемой, поэтому думал, что я отправлю сам.
Вот мой код.
Я включил только те биты, которые я считаю актуальными, но, пожалуйста, дайте мне знать, если вытребовать что-либо еще.
Определения интерфейса хоста
[ServiceContract(CallbackContract = typeof(IDataCollectorCallback), SessionMode = SessionMode.Required)]
public interface IDataCollector
{
[OperationContract(IsOneWay = true)]
void GetData();
}
public interface IDataCollectorCallback
{
[OperationContract(IsOneWay = true)]
void returnData();
}
Реализация услуги
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>();
}
}
}
Код клиента.
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");
}
}
Чтобы получить ссылкук интерфейсу IDataCollector я включил ссылку на DLL в проекте хоста.Мне интересно, в этом ли моя проблема.Нужно ли повторно указывать интерфейс обратного вызова в клиентском приложении?
Пожалуйста, дайте мне знать, если вам требуется что-то еще.
С уважением
Ясень