gpt4 book ai didi

c# - 如何使用 HttpClient 类正确建立从 UWP App 到 WebAPI 的 SSL 连接?

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:21 34 4
gpt4 key购买 nike

我有一个与服务器 WebAPI 通信的 UWP 应用程序。为此,我使用了 Windows.Web.Http 命名空间中的 HttpClient 类。如果我使用简单的 Http URL,它确实可以正常工作。由于发送密码和其他敏感数据,我想使用 SSL。但是当我尝试使用 Https URL 时出现问题。程序仍然向我显示一条错误消息,提示“证书颁发机构无效或不正确”。我是证书等方面的新手,所以它没有告诉我任何有用的信息。在某些网站上,我找到了一些半解决方案。使用 HttpBaseProtocolFilter 类,我可以设置选项来忽略一些服务器证书错误,如下所示:

HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter();
filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted);
HttpClient client = new HttpClient(filter);

它可以工作,但只能在桌面上使用。当我在移动模拟器上运行我的应用程序时,错误再次出现。此外,我真的不认为这是一个好的解决方案,所以我搜索了其他东西并找到了这个:https://pfelix.wordpress.com/2012/12/16/using-httpclient-with-ssltls/ .有一些关于 HttpClient 和 SSL 的信息,但据我所知,它是关于命名空间 System.Net.Http 中的 HttpClient 的。我为 Windows Store App 尝试了这个解决方案,但它也没有奏效。

var client = new HttpClient(new HttpClientHandler
{
ClientCertificateOptions = ClientCertificateOption.Automatic
});

所以这是我的问题:如何设置此 HttpClient(来自 Windows.Web.Http 或 System.Net.Http)以执行与我的 WebAPI 的有效 SSL 连接?也许服务器端需要设置一些东西?

编辑:我正在使用 Visual Studio 2015 中的 IIS Express,因为我真的不知道如何将我的 WebAPI 添加到完整的 IIS 并让它工作。我还在 WebAPI 项目属性中打开了 SSL,它为我生成了一个 Https URL(所以我认为它也会生成一个正确的证书)。如果我尝试导航到 Http URL,在我的 Mozilla Firefox 和 IE 上一切正常。当我尝试我的 https://localhost:44301/ 时显示关于不受信任的证书的错误两个浏览器中的 URL。

最佳答案

您已接近 HttpClientHandler 方法,但您想信任服务器证书,而不是客户端证书(您的示例中不存在)。试试这个:

HttpClient client = new HttpClient(new HttpClientHandler { 
ServerCertificateCustomValidationCallback = (a, b, c, d) => true });

这将导致所有服务器证书都受到信任,因此不要在生产中使用它,但非常适合在开发期间从 UWP 应用程序访问本地主机上的 https 服务。

关于c# - 如何使用 HttpClient 类正确建立从 UWP App 到 WebAPI 的 SSL 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39237553/

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