首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

WCF双工通讯有关问题——菜鸟诚心求教

2012-10-29 
WCF双工通讯问题——初学者诚心求教错误提示:向 ChannelFactory 提供的 InstanceContext 包含未实现 Callbac

WCF双工通讯问题——初学者诚心求教
错误提示:向 ChannelFactory 提供的 InstanceContext 包含未实现 CallbackContractType“ICalculatorCallback”的 UserObject。

服务端

C# code
[ServiceContract(CallbackContract = typeof(ICalculatorDuplexCallback))]    public interface ICalculator {        [OperationContract]        void SendMessage(string message);    }    public interface ICalculatorDuplexCallback {        [OperationContract]        void ServerReply(string originalMessage);    }

客户端实现
C# code
        public void ServerReply(string originalMessage) {            Console.WriteLine("{0} 收到服务器回复:{1}", DateTime.Now, originalMessage);        }


然后调用如下:
C# code
            WSDualHttpBinding binding = new WSDualHttpBinding();            EndpointAddress endptadr = new EndpointAddress("http://localhost:12000/DuplexTestUsingCode/Server");            binding.ClientBaseAddress = new Uri("http://localhost:8000/DuplexTestUsingCode/Client/");            CallbackHandler callback = new CallbackHandler();            CalculatorClient client = new CalculatorClient(new InstanceContext(callback), binding, endptadr);            Console.Write("请输入:");            string input = Console.ReadLine();            while (input != "Exit") {                client.SendMessage(input);//到这里就报错了、                Console.WriteLine();                Console.Write("请输入:");                input = Console.ReadLine();            } 


是我契约的问题么?诚心求教高人

[解决办法]
ICalculatorCallback 的实现类呢?
[解决办法]
ICalculatorCallback是自己定义的一个接口,不是系统自带的,名字自己取的,所以并没有强行规定必须用哪个,只不过名字中含有“Duplex”就便于识别,仅此而已。

你在什么地方用到了ICalculatorCallback,但是你的给的代码里面却只有ICalculatorDuplexCallback,光这点很难判断,如果你是在原先ICalculatorCallback代码的基础上进行的修改,就很有可能未改全,漏改了什么地方,你可以尝试将ICalculatorCallback接口的定义直接从项目中删除,然后编译看看是否通过,毕竟连定义都没有了的话,错误提示就不可能再是那个了。

热点排行