更新WCF服务引用时出现‘Interface not supported’错误求助
验证服务端元数据可用性
直接在浏览器访问WCF服务的元数据地址(格式如http://你的网站域名/服务文件名.svc?wsdl),如果能正常显示XML格式的WSDL内容,说明服务端元数据发布正常;如果无法访问,检查网站的web.config配置,确保<system.serviceModel>下的<serviceMetadata>节点中httpGetEnabled属性设为true。清理旧引用及编译缓存
- 关闭Visual Studio 2019
- 删除项目中
Service References文件夹下的目标服务引用目录 - 删除项目根目录下
obj文件夹内的所有文件(清除编译缓存) - 重新打开VS,通过Add Service Reference手动输入服务地址重新添加引用,替代直接更新旧引用的操作
检查Visual Studio必备组件
打开Visual Studio Installer,确认已勾选安装“.NET Framework 目标包和开发工具”以及“WCF开发工具”组件。若缺失,勾选后完成安装,重启VS再尝试更新。用SvcUtil工具手动生成代理类
以管理员身份打开Visual Studio开发者命令提示符,执行以下命令生成代理类和配置文件:svcutil.exe http://你的网站地址/服务文件名.svc?wsdl /out:ServiceProxy.cs /config:App.config将生成的
ServiceProxy.cs添加到项目中,替换原服务引用自动生成的代码,并把生成的App.config中的配置节点合并到项目的配置文件里。确认服务端数据契约兼容性
检查网站端的WCF数据契约类(标记[DataContract]的类),确认新增SQL字段对应的属性已添加且标记了[DataMember]。同时确保新增字段为可空类型或带有默认值,避免序列化时出现异常。排查VS版本兼容性
将Visual Studio 2019更新至最新版本,或临时使用Visual Studio 2022打开项目尝试更新服务引用,部分旧版本VS的WCF工具存在已知兼容性bug。
内容的提问来源于stack exchange,提问作者Giorgio Forti

