gpt4 book ai didi

windows-runtime - 在 WinRT 应用程序中,如何使用 TLS1.2 进行连接?

转载 作者:行者123 更新时间:2023-12-04 13:28:15 24 4
gpt4 key购买 nike

我有一个 Windows Store 应用程序,它是一个 WinRT 手机/桌面应用程序(即不是 UWP 应用程序),针对 Windows 8.1 及更高版本。
它已经在商店中存在好几年了,但最近它停止能够使用 HTTPS 连接各种 Web API 和网站(YouTube,以及我自己的网站)。
我也有这个应用程序的 WPF 版本,最近在那个应用程序上也发生了这种情况,为了修复它,我使用了 System.Net.ServicePointManager .不幸的是,在我的 WinRT 环境中,System.Net不包括 ServicePointManager .在我的 WPF 应用程序中,我这样做了,而且效果很好:

ServicePointManager.ServerCertificateValidationCallback = delegate
{
Debug.WriteLine("returning true (the ssl is valid)");
return true;
};

// our server is using TLS 1.2
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
在互联网上做一些研究时,似乎.NET 4.6 应该包括 ServicePointManager ,但我没有看到任何方法可以在 WinRT 开发环境中更改(甚至查看)我的 .NET 版本。
我多看了几眼,发现一个 StreamSocket可用于连接 TLS1.2 ……但这似乎主要是为了启用蓝牙通信或与 Web 端点的通信,但只能通过主机名……这对我来说还不够。我需要连接到一个实际的网站,而不仅仅是基础域。
尝试这个,我做了以下事情:
StreamSocket socket = new StreamSocket();
string serverServiceName = "https";
socket.Control.KeepAlive = false;
url = "inadaydevelopment.com";
HostName serverHost = new HostName(url);
await socket.ConnectAsync(serverHost, serverServiceName, SocketProtectionLevel.Tls12);
text = await ReadDataFromSocket(socket);
我可以包含 ReadDataFromSocket() 的代码如果有必要,但它似乎可以工作,当我将它指向 https://google.com 时,按预期从套接字读取数据.但是,我似乎无法弄清楚如何将套接字指向任何有用的东西。 inadaydevelopment.com 的主页不是我想要的;我希望使用托管在该服务器上的 Web API,但似乎无法找到一种方法来做到这一点。
自第一个参数到 ConnectAsync()方法只是 HostName ,第二个参数 ( remoteServiceName ) 必须是连接到我尝试连接的实际 API 或网页的方式。根据 the docs ,即 The service name or TCP port number of the remote network destination...除了 https 之外,我还没有看到此参数的任何示例值和各种数值,它们都不会让我进入我试图连接的 API 端点或网页。
所以,去掉超长的序言, 我的问题归结为这个 :
有没有办法让我使用 System.Net.ServicePointManager在我的 WinRT 应用程序中,就像我在 WPF 应用程序中所做的那样?如果是这样,如何?
如果没有,我该如何使用 StreamSocket连接到我想要连接的确切 Web 服务或网页,而不仅仅是顶级主机?
如果这是不可能的,我可以通过什么其他方式使用 TLS1.2 消费网络内容?
在此先感谢您的任何帮助或建议。

最佳答案

使用 Windows.Web.Http API 而不是 System.Net.Http应用程序接口(interface)。System.Net.Http不支持 TLS1.2 但 Windows.Web.Http在 WinRT 应用程序中。

关于windows-runtime - 在 WinRT 应用程序中,如何使用 TLS1.2 进行连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66788651/

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