0

我们有一个 C# 类,服务器和 Web 应用程序都使用它从 3rd 方 Web 服务获取信息。目前,该服务可通过 http 和 https 访问。我们正试图让班级使用 https,因为我们相信第 3 方将来只会允许 https 访问。

这是我们的有效代码:

using (HttpClient httpClient = new HttpClient())
        {
            try
            {
                //specify to use TLS 1.2 as default connection
                System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

                var uri = new Uri(url);
                string uriStr = uri.ToString();
                string msg = $"uri: {uriStr}";

                ApplicationLogger.Singleton.LogMessage(LogCategories.General, System.Diagnostics.TraceEventType.Verbose, msg, "GetUrlResponseString - uri");

                var task =  httpClient.GetStringAsync(uri);
                task.Wait();

                string taskBools = "";
                if (task.IsCompleted)
                    taskBools = "Task Completed";
                else if (task.IsFaulted)
                    taskBools = "Task Faulted";
                else if (task.IsCanceled)
                    taskBools = "Task Canceled";

                string taskStatus = task.Status.ToString();
                msg = $"Task Status: {taskBools} taskStatus: {taskStatus}";

                ApplicationLogger.Singleton.LogMessage(LogCategories.General, System.Diagnostics.TraceEventType.Verbose, msg, "Task Status");

                string listOfSites = (string)task.Result;
                ApplicationLogger.Singleton.LogMessage(LogCategories.General, System.Diagnostics.TraceEventType.Verbose, 
                    $"listOfSites: {listOfSites}", "GetUrlResponseString - listOfSites");

                return listOfSites;
            }

在您的网站和其他网站上,我们看到提到了 SecurityProtocolType.SystemDefault。根据我的研究,我们想使用它,因为它应该从操作系统中获取安全设置。我们希望我们的服务器管理员来处理这个问题。这样我们将来就不必更改代码。

现在我知道当 .Net 支持 Tls13、Tls14 等时,我们可能需要重新编译和部署类库。但它仍然消除了代码更改。

无论如何,我们的服务器管理员无法让它与 SecurityProtocolType.SystemDefault 设置一起使用。她想知道程序认为当前的安全设置是什么。有什么我无法检查/打印以查看它的内容吗?

4

0 回答 0