通过带有数字证书的WCF消费Web服务

问题描述

我正在开发一个需要使用Web服务(WSDL)的应用程序。要访问此WSDL,我需要使用certificate.pfx。我已经在计算机上安装了该证书。我已经设法通过浏览器和SOAPUi访问此WS。但是,当我尝试通过Visual Studio(WCF / .net核心)导入WSDL时,出现以下错误

尝试在以下位置查找服务时发生错误 'https://xxxxxxx-spi-homo-ws-site1.xxxx.com/wsdl'。远程服务器 返回错误:(403)禁止

当我尝试通过.NET Framework 4.7使用WS时,单击“项目>添加服务引用>高级>添加Web引用”,要求确认证书(图1)。当我单击OK时,它会给出另一个错误(图2)。

Figure 1

Figure 2

我尝试在浏览器中执行“另存为...”并创建了一个.wsdl文件,并通过“ Visual Studio”的“浏览”进行了导入,并给出了以下错误

Figure 3

我想知道我如何使Visual Studio使用证书访问WSDL。

解决方法

如果您可以在浏览器中打开WSDL文件,则可以将其保存在本地:

enter image description here

然后,您可以使用svcutil生成代理类,svcutil是一个.NET工具,可从网络位置上的Web服务或WSDL文件中检索元数据,并生成包含访问Web的客户端代理方法的WCF类。服务操作。

您可以在VS的命令行界面上使用此工具:

enter image description here

执行上述命令将在磁盘D上生成一个代理类和配置文件。然后将这两个文件添加到您的项目中。

如果问题仍然存在,请随时告诉我。