2011-02-11 6 views
6

WCF 이중 통신을 작동시키려는 Im이 계속해서 어려움을 겪고 있습니다. "InstanceContext에 제공되는 ChannelFactory에는 CallbackContractType을 구현하지 않는 UserObject가 있습니다."InstanceContext는 ChannelFactory에 CallbackContractType을 구현하지 않는 UserObject를 포함합니다.

나는 주제에 다른 포스트가다는 것을 알고있다 그러나 couldnt는 나의 정확한 문제에 그 (것)들을 관련시킨다 그래서 나 자신을 배치 할 것이라는 점을 생각했다.

Heres my code.

나는 관련성이 있다고 생각되는 부분 만 포함 시켰지만 필요한 것이 있으면 알려 주시기 바랍니다.

호스트 인터페이스는 서비스의

[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을 참조해야합니다. 내 문제가 어디에 있는지 궁금 하네. 클라이언트 애플리케이션에 콜백 인터페이스를 redclare해야합니까?

다른 것이 필요한 경우 알려주십시오.

친절 감사

애쉬

답변

14

죄송합니다.

답변을 작성했습니다.

내 문제는 내가 콜백 인터페이스를 포함하는 DLL을 참조했다는 것이 었습니다. 내가 했어야 무엇

는 .... 그것은이 일을 알아 내기 위해 영원히 걸렸다 것 애쉬

0

class MyCallback : AshService.IDataCollectorCallback 

감사

이있다. 샘플 코드에서 복사 할 때 콜백 클래스 선언에서 인터페이스를 생략했습니다.

관련 문제