正在使用System.Net.ServicePointManager.SecurityProtocol

时间:2018-08-06 16:09:19

标签: c# https httpclient servicepointmanager

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

0 个答案:

没有答案