通过带有数字证书的 WCF 使用 Web 服务

Posted

技术标签:

【中文标题】通过带有数字证书的 WCF 使用 Web 服务【英文标题】:Consuming Web-Service via WCF with digital certificate 【发布时间】:2021-01-27 01:34:19 【问题描述】:

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

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

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

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

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

【问题讨论】:

这可能是服务器端的问题,能不能在浏览器中访问wsdl文件? 【参考方案1】:

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

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

你可以在VS的命令行界面使用这个工具:

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

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

【讨论】:

如果您觉得我的回复对您有帮助,可以标记为回答。

以上是关于通过带有数字证书的 WCF 使用 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

iPhone Web 服务通过证书身份验证调用 WCF 服务

WCF:Svcutil 生成无效的客户端代理、Apache AXIS Web 服务、重载操作

使用ssl和客户端证书的Wcf:请求svc succes wcf调用返回403.16

一段时间后,带有客户端证书的 WCF 应用程序失败?

尽管有 web.config 条目,但带有 ASP.NET WCF 服务的 jQuery AJAX CORS 无法正常工作

带有身份验证的 WCF 流式处理