我们有一个C#类,服务器和Web应用程序都使用该类来从第三方Web服务获取信息。当前可以通过http和https访问该服务。我们正在尝试让该类与https一起使用,因为我们相信第三方将来只会允许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设置一起使用。她想知道程序认为当前的安全设置。有什么我无法检查/打印的东西是什么?