.NET Framework 4.7现有应用如何正确添加WCF服务引用
.NET Framework 4.7 项目添加WCF服务引用的可行方案
针对高版本Visual Studio中仅展示.NET Core/.NET Standard专属WCF引用入口、找不到.NET Framework对应配置路径的问题,可通过以下几种原生方式完成引用配置:
方法1:使用.NET Framework专属经典服务引用入口
- 在解决方案资源管理器中右键目标.NET Framework 4.7项目,依次选择 添加 > 连接的服务
- 在打开的连接服务面板中,点击 Microsoft WCF Web Service Reference Provider(注意:该生成器会根据项目类型自动适配,为.NET Framework项目生成基于经典
System.ServiceModel程序集的代理类,和.NET Core用的轻量WCF客户端不兼容) - 在弹出的配置窗口中输入WCF服务的元数据地址(通常为服务访问路径后拼接
?wsdl,例如http://localhost:8080/OrderService.svc?wsdl),点击「转到」识别服务暴露的所有契约 - 可自定义生成的客户端代理类命名、配置文件的终结点节点名称,确认后即可自动完成代理类生成,同时自动向项目配置文件插入匹配的绑定、终结点配置节点
- 如果上述流程中找不到对应选项,可直接在连接服务面板底部点击「查找更多服务引用」,即可唤起经典版本的WCF服务引用配置窗口
方法2:使用SvcUtil命令行工具手动生成代理
如果可视化入口出现异常,可直接使用Visual Studio自带的SvcUtil原生WCF工具生成客户端代码:
- 打开对应版本的「Developer Command Prompt for Visual Studio」,直接调用
svcutil命令 - 参考命令格式:
svcutil http://你的WCF服务地址/服务.svc?wsdl /out:WcfClientReference.cs /config:app.config - 将生成的
WcfClientReference.cs文件直接添加到项目中,把生成的config文件内system.serviceModel节点内容合并到项目自身的配置文件中 - 手动为项目添加必要的程序集引用:
System.ServiceModel、System.Runtime.Serialization(均为.NET Framework 4.7自带的内置程序集,无需额外安装NuGet包)
实操注意事项
- 不要误选适配.NET Core/.NET Standard的WCF Web Service Reference生成器,这类生成的客户端依赖跨平台版本的
System.ServiceModelNuGet包,在.NET Framework 4.7环境下会出现版本兼容问题 - 如果引用WCF服务的是类库类项目,自动生成的配置节点会存在类库自身的app.config中,上线前必须将对应配置节点合并到最终启动项目(ASP.NET Web应用、WinForm/WPF主程序等)的配置文件中,否则运行时会出现"找不到终结点配置"的异常
- 生成代理后需核对客户端的绑定配置(传输协议、安全模式、超时设置等)与服务端完全匹配,避免通讯失败
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

