如何为需要客户端身份验证证书的 Web 服务添加对 WCF 客户端的服务引用

Jay*_*Jay 3 authentication wcf wcf-binding wcf-client

注意,WCF noobie 警报

我需要创建一个 WCF 客户端来查询非 WCF Web 服务。Web 服务不是 WCF 服务。此外,Web 服务需要客户端身份验证证书。现在,我有了证书,可以创建一个完美运行的非 WCF 客户端;我能够“添加 Web 引用”并打开一个证书对话框以允许我选择适当的证书,然后继续创建 Web 引用。尝试通过“添加服务引用”创建 WCF 客户端是另一回事,它只是因 403 拒绝访问错误而失败。

我有该服务的 WSDL,并已在其上运行 svcutil.exe,但我不确定如何从那里继续。

谢谢你的帮助!

Ran*_*ica 5

我假设您正在使用的服务正在执行客户端 SSL 身份验证。

由于添加服务引用失败,您可以使用svcutil从您拥有的WSDL 文件生成客户端。我认为语法会是这样的:

svcutil *.wsdl /l:C# /out:Reference.cs /config /s /ct:System.Collections.Generic.List`1 /ser:Auto /tcv:Version35 /n:*,<NameOfYourNamespaceHere> /edb
Run Code Online (Sandbox Code Playgroud)

这将生成一个文件 Reference.cs,其中包含服务的代理类(您可以为该文件指定任何您想要的名称)。将此文件添加到您的项目中。还将生成一个配置文件,output.config。您可以将此配置添加到应用程序配置中,而不用手动输入所有内容。

现在您可以按照这篇有关使用传输安全性和证书身份验证的MSDN 文章进行操作。您可以跳到客户端部分,其中显示如何在代码和配置中将证书附加到请求。


Lad*_*nka 5

我知道这是一个老问题,它已经解决了,但我想提一下,添加服务引用也适用于存储在磁盘上的 WSDL 文件。马克也提到过。添加服务引用对话框接受:

  • WSDL 的 URL
  • 元数据交换端点的 URL
  • 内部添加 /mex 的服务 URL
  • WSDL 文件的任何文件路径

因此,如果您有 WSDL 并且都需要 XSD 文件,您也可以使用添加服务引用。唯一棘手的部分是“添加服务引用”对话框没有“浏览”按钮,这就是此功能不为人所知的原因。