gpt4 book ai didi

wcf - Visual Studio WCF 连接服务证书验证

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:39 25 4
gpt4 key购买 nike

我需要使用 WCF 服务。我正在使用 ASP.NET 5,因此必须使用扩展 Visual Studio WCF Connected Service。当我尝试将 WCF 服务引用添加到我的类库时,我不能这样做,因为证书的验证。我的计算机上安装了证书,但似乎不起作用。在我的项目中添加服务时,如何忽略证书的验证?使用完整的 .NET 框架,这可以通过添加


ServicePointManager.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;
var service = new DataServiceSoapClient("DataServiceSoap");

但这是在将服务引用添加到项目之后,我的问题是在添加服务时。

错误的完整描述是:

Scaffolding Code ...
Attempting to download metadata from 'https://login.uh.cu/webservices/dataservice.asmx' using WS-Metadata Exchange and HttpGet.

Error:Error: Cannot obtain Metadata from https://login.uh.cu/webservices/dataservice.asmx
If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.
WS-Metadata Exchange Error
URI: https://login.uh.cu/webservices/dataservice.asmx
Metadata contains a reference that cannot be resolved: 'https://login.uh.cu/webservices/dataservice.asmx/mex'.
Could not establish trust relationship for the SSL/TLS secure channel with authority 'login.uh.cu'.
The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
The remote certificate is invalid according to the validation procedure.

Failed to generate service reference.

最佳答案

一般来说,使用无效证书来托管 SSL“安全”服务确实不是什么好习惯……无论如何,我最近与客户合作过,他们也使用自签名证书公开他们的所有服务。

正如您已经注意到的那样,您需要一种方法来在设置 ServerCertificateValidationCallback 之前“接受”不受信任的源,因为稍后在执行 ASP.NET 站点时在您的用户代码中使用该回调。添加服务引用时,尚未使用此回调。 但请记住,使用上述代码对任何 证书进行一般性验证是很危险的。你不应该在生产中使用它!

当尝试通过 resp 添加服务引用时。 Visual Studio 对话框拒绝这样做,因为 VS 无法验证远程证书。正是你遇到的问题。解决此问题的一种方法是通过浏览器调用 WSDL。您的浏览器通常允许您跳过 SSL 警告。这样做您可以手动将 WSDL 保存到本地文件并使用该文件让 VS 添加服务引用。


为了向您展示一个示例,我通过使用 Global Weather Service 说明了这种方法(它根本不是 SSL 安全的,但无论如何都可以作为示例)。

它的 asmx 服务位于 http://www.webservicex.net/globalweather.asmx .通过添加 ?wsdl,您通常可以直接检索 WSDL:http://www.webservicex.net/globalweather.asmx?wsdl

您可以对服务执行相同的操作:https://login.uh.cu/webservices/dataservice.asmx?wsdl

然后您的浏览器会提示一个 SSL 警告,您应该可以跳过它。跳过警告的方式取决于您使用的浏览器。也许看看this .

跳过警告后,您应该可以直接在浏览器中看到 WSDL。例如,我使用谷歌浏览器这样做了:

enter image description here

然后您可以右键单击结果并将其保存在本地磁盘上的任意位置。

回到 Visual Studio,您可以通过指向本地保存的 WSDL 文件的添加引用对话框添加服务:

enter image description here

关于wcf - Visual Studio WCF 连接服务证书验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36802973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com