如何解决实现回调方法时收到的错误?

时间:2011-11-18 06:02:43

标签: wcf

我目前正在开发WCF双工服务,我正在尝试在我的客户端应用中实现回调方法,但是出现了错误

'App.CallbackHandler' does not implement interface member IPostingServiceCallback.retrieveNotification(Service.Posting)' 

我服务的服务合约如下

[ServiceContract(SessionMode=SessionMode.Required , CallbackContract = typeof(IPostingServiceCallBack))]
public interface IPostingService
{
    [OperationContract(IsOneWay = true)]
    void postNotification(Posting post);
}

public interface IPostingServiceCallBack
{
    [OperationContract]
    String retrieveNotification(Posting post);
}

我已生成代理并添加到客户端的项目文件中,并将端点地址添加到app.config中。

修改

我目前在客户端应用中的代码是

public class CallBackHandler : IPostingServiceCallback
{
    public void retrieveNotification()
    {
        //planning to do something
    }
}

1 个答案:

答案 0 :(得分:0)

您的客户端应用程序需要实现IPostingServiceCallBack并定义retrieveNotification方法。

假设您有一个将使用双工服务的客户端(不是代理):

public class MyClient : IPostingServiceCallBack
{

    public String retrieveNotification(Posting post)
    {

       // Implement your logic here
    }
}

注意以上是一个简单的例子。您的客户端也可能派生自另一个类(取决于它是ASP.NET,WinForms,WPF等)。

<强>更新

您仍然没有实施该方法。您的回调界面是:

public interface IPostingServiceCallBack
{
    [OperationContract]
    String retrieveNotification(Posting post);
}

您的实施是:

public class CallBackHandler : IPostingServiceCallback
{
    public void retrieveNotification()
    {
        //planning to do something
    }
}

您有public void retrieveNotification(),而界面有String retrieveNotification(Posting post)。方法签名不匹配。

你需要这样做:

public class CallBackHandler : IPostingServiceCallback
{
    public String retrieveNotification(Posting post)
    {
        // planning to do something
    }
}