VS 2019添加Service Reference不显示且csproj已关联无法使用如何解决
解决VS2019添加ASMX服务引用后无法显示、无法调用的问题
1 先清理现有无效引用
- 右键项目选择「管理连接的服务」,在已安装服务列表找到该KPSPublic服务项,点击删除
- 关闭VS2019,打开项目对应的
.csproj文件,手动删除所有和该服务相关的配置节点,包括<WCFMetadata>、<ServiceReference>对应的ItemGroup内容,保存后重新打开VS
2 重新按正确流程添加服务引用
- 右键项目 → 选择「添加」→「服务引用」
- 弹窗左侧选择「Web 服务(ASMX)」,点击「下一步」
- URI输入框填写WSDL地址:
https://tckimlik.nvi.gov.tr/service/kpspublic.asmx?WSDL,点击「转到」 - 等待服务元数据加载完成后,自定义命名空间(例如
KpsPublicService),点击「完成」等待VS自动生成代理类 - 生成完成后重启一次VS,再打开「管理连接的服务」即可看到对应服务项,解决方案资源管理器的「Connected Services」节点下也会出现对应命名空间的服务目录
3 备选方案:手动生成代理类
如果上述操作后仍然无法显示服务,可通过命令行直接生成代理类引入项目:
- 打开VS2019对应的开发者命令提示符(Developer Command Prompt for VS 2019)
- 执行
wsdl命令生成代理类:wsdl /language:C# /out:KpsPublicService.cs https://tckimlik.nvi.gov.tr/service/kpspublic.asmx?WSDL - 命令执行完成后,将生成的
KpsPublicService.cs文件直接添加到项目中即可 - 提前在项目中添加
System.Web.Services程序集引用:右键项目 → 「添加」→「引用」→ 找到「程序集」分类下的System.Web.Services勾选确认即可
4 调用验证示例
// 引入服务命名空间 using KpsPublicService; // 初始化服务客户端 var kpsClient = new KPSPublic(); // 调用身份证号验证方法示例 bool verifyResult = kpsClient.TCKimlikNoDogrula(12345678901, "名字", "姓氏", 1990);
注意事项
- 确保项目运行环境可以正常访问该HTTPS服务地址,无防火墙、代理拦截
- 若出现证书验证错误,可在调用服务前添加以下代码跳过验证(仅测试环境使用,生产环境建议导入对应根证书保证安全):
System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
内容的提问来源于stack exchange,提问作者Fatih
相关产品推荐
相关产品推荐

