WCF新增方法未同步至WPF服务引用,报错“方法不是成员”求助
解决WCF新增方法后WPF客户端无法调用的问题
嘿,我刚入门VB.NET做WPF+WCF开发的时候也踩过这个坑!你遇到的问题本质是客户端的服务代理类没有同步服务端的新方法,下面一步步教你修复:
第一步:先确保WCF服务端编译通过
先把WCF项目里的代码保存好,右键WCF项目选择「生成」,确认没有编译错误。如果服务端本身有问题,后续更新引用肯定会失败。第二步:检查服务契约接口的声明(关键!很多新手会漏这步)
你在.svc.vb里写了新方法,但必须先在对应的服务契约接口(比如IServicePrincipal.vb)里添加这个方法的声明,还要加上<OperationContract>特性,不然WCF不会把这个方法暴露给客户端。示例代码:<ServiceContract()> Public Interface IServicePrincipal ' 这里放你已有的其他服务方法... ' 新增的方法必须加OperationContract特性 <OperationContract()> Sub MyNewFonction() ' 替换成你实际的方法签名 End Interface然后再回到
.svc.vb的实现类里,确保这个方法正确实现了接口里的声明:Public Class ServicePrincipal Implements IServicePrincipal ' 已有方法的实现... Public Sub MyNewFonction() Implements IServicePrincipal.MyNewFonction ' 你的方法逻辑代码 End Sub End Class第三步:更新WPF项目里的服务引用
回到WPF项目的解决方案资源管理器,找到你添加的ServiceReference1,右键它选择「更新服务引用」。等待更新完成,这时候客户端的代理类就会同步服务端的新方法了。第四步:重新编译WPF项目并测试
更新完引用后,重新编译WPF项目,这时候再调用client.MyNewFonction()就不会报错啦。
如果更新引用后还是不行,可以试试删除旧的服务引用,然后重新添加一次——有时候缓存会导致更新不生效,重新添加能解决这个问题。
内容的提问来源于stack exchange,提问作者Elddif
相关产品推荐
相关产品推荐

