代码之家  ›  专栏  ›  技术社区  ›  Jay jarib

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

  •  3
  • Jay jarib  · 技术社区  · 15 年前

    警告,WCF Noobie警报

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

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

    谢谢你的帮助!

    3 回复  |  直到 14 年前
        1
  •  3
  •   Randy Levy    15 年前

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

    由于添加服务引用失败,因此可以使用 svcutil generate the client from the WSDL file 你拥有的。我认为语法应该是这样的:

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

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

    现在,您可以按照此msdn文章使用 Transport Security with Certificate Authentication . 您可以跳到客户机部分,该部分将以代码和配置的形式向请求显示如何附加证书。

    祝你好运。

        2
  •  3
  •   Ladislav Mrnka    14 年前

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

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

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

        3
  •  0
  •   marc_s HarisH Sharma    15 年前

    愚蠢的问题(可能):您可以连接到服务端点,向它提供存储在证书中的凭证,然后从那里下载WSDL(可能还有XSD)吗?或者,提供此服务的实体是否能够实际向您发送这些文件(或使其可供下载)?

    一旦您在磁盘上有了WSDL(和XSD)文件,就可以很容易地为此创建WCF客户机(使用 svcutil.exe Add Service Reference )基于这些文件,然后为其配置适当的安全性。

    只是一个想法……(价值0.02美元?)

    马克