2009-08-16 120 views
3

注意Web服务,WCF noobie警报如何将服务引用添加到WCF客户端需要客户端身份验证证书

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

我有服务的WSDL,并已运行svcutil.exe,但不知道如何从那里继续。

感谢您的帮助!

+0

您的开发机器上是否安装了客户端身份验证证书? – 2009-08-16 12:07:43

回答

3

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

由于添加服务引用失败,因此您可以使用svcutilgenerate 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。您可以跳到客户端部分,在其中显示如何在代码和配置中将证书附加到请求。

祝你好运。

+0

这样做的窍门,谢谢你的文章参考。 – Jay 2009-08-20 03:46:18

0

愚蠢的问题(也许):你可以连接到服务端点,将它与存储在证书中的证书一起呈现,然后从那里下载WSDL(可能还有XSD)?或者,提供这项服务的实体能否真正向你发送这些文件(或使它们可供下载)?

在磁盘上创建WSDL(和XSD)文件后,应该很容易为其创建基于这些文件的WCF客户端(使用svcutil.exeAdd Service Reference),然后为其配置相应的安全性。

只是一个想法....(价值$ 0.02≦)

马克

3

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

  • URL到WSDL
  • URL元数据交换终结在那里/ MEX内部添加
  • 任何文件路径WSDL文件

所以

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

  • +0

    +1对于额外的评论并不明显,“地址”字段采用文件路径并且没有“浏览”按钮。 – 2014-01-17 00:43:13

    相关问题