UserObject 没有实现 CallbackContractType 'Client.MyService.IMyServiceCallback'
UserObject does not implement the CallbackContractType 'Client.MyService.IMyServiceCallback'
我试图在 Visual Studio 2015 年使用 WCF 实现通用双工连接,但是,在 运行 我的客户端应用程序出现此错误:
The InstanceContext provided to the ChannelFactory contains a UserObject that does not implement the CallbackContractType 'Client.MyService.IMyServiceCallback'.
我似乎找不到引用的文件有任何问题:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
using Client.MyService;
namespace Client
{
class Program
{
static void Main(string[] args)
{
var callback = new InstanceContext(new ClientCallback());
var client = new MyServiceClient(callback);
client.Open();
client.Register();
Console.WriteLine("Press a key to exit");
Console.ReadKey();
client.Close();
}
}
}
接口似乎正确实现了:
namespace Client
{
public interface IMyServiceCallback
{
[OperationContract(IsOneWay = true)]
void Tick(DateTime dateTime);
}
}
namespace Client
{
public class ClientCallback : IMyServiceCallback
{
public void Tick(DateTime dateTime)
{
Console.WriteLine(dateTime);
}
}
}
如有任何帮助或建议,我们将不胜感激。
我假设 class MyServiceClient 是通过添加服务引用自动生成的。如果是这样的话,MyServiceClient 实现了一个接口,我假设这个接口叫做 IMyService。该接口将具有通过属性指定的回调协定。它看起来像这样:
[ServiceContract(CallbackContract = typeof(IMyServiceCallback))]
public interface IMyService
{
[OperationContract]
void Register();
}
CallbackContract 设置的确切接口类型是您的回调 class 需要实现的。声明一个同名的新接口(使用不同的命名空间,否则会出现编译错误)不等同于在常规服务接口上指定的接口。删除 IMyServiceCallback 的定义并更改 ClientCallback 以实现正确的接口类型。
我试图在 Visual Studio 2015 年使用 WCF 实现通用双工连接,但是,在 运行 我的客户端应用程序出现此错误:
The InstanceContext provided to the ChannelFactory contains a UserObject that does not implement the CallbackContractType 'Client.MyService.IMyServiceCallback'.
我似乎找不到引用的文件有任何问题:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
using Client.MyService;
namespace Client
{
class Program
{
static void Main(string[] args)
{
var callback = new InstanceContext(new ClientCallback());
var client = new MyServiceClient(callback);
client.Open();
client.Register();
Console.WriteLine("Press a key to exit");
Console.ReadKey();
client.Close();
}
}
}
接口似乎正确实现了:
namespace Client
{
public interface IMyServiceCallback
{
[OperationContract(IsOneWay = true)]
void Tick(DateTime dateTime);
}
}
namespace Client
{
public class ClientCallback : IMyServiceCallback
{
public void Tick(DateTime dateTime)
{
Console.WriteLine(dateTime);
}
}
}
如有任何帮助或建议,我们将不胜感激。
我假设 class MyServiceClient 是通过添加服务引用自动生成的。如果是这样的话,MyServiceClient 实现了一个接口,我假设这个接口叫做 IMyService。该接口将具有通过属性指定的回调协定。它看起来像这样:
[ServiceContract(CallbackContract = typeof(IMyServiceCallback))]
public interface IMyService
{
[OperationContract]
void Register();
}
CallbackContract 设置的确切接口类型是您的回调 class 需要实现的。声明一个同名的新接口(使用不同的命名空间,否则会出现编译错误)不等同于在常规服务接口上指定的接口。删除 IMyServiceCallback 的定义并更改 ClientCallback 以实现正确的接口类型。