我们有一个 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 设置一起使用。她想知道程序认为当前的安全设置是什么。有什么我无法检查/打印以查看它的内容吗?