Created
August 20, 2020 19:14
-
-
Save Swimburger/89586abffd42334a47c389c8f4c75c29 to your computer and use it in GitHub Desktop.
Change ServicePointManager.SecurityProtocol through configuration appsettings
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<configuration> | |
<appSettings> | |
<add key="SecurityProtocol.Remove" value="Ssl3,Tls" /> | |
<add key="SecurityProtocol.Add" value="Tls11,Tls12" /> | |
</appSettings> | |
</configuration> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Net; | |
using System.Configuration; | |
using System; | |
using System.Linq; | |
public static class ConfigureSecurityProtocols | |
{ | |
public static void Configure() | |
{ | |
RemoveSecurityProtocols(); | |
AddSecurityProtocols(); | |
} | |
private static void RemoveSecurityProtocols() | |
{ | |
var securityProtocolsToRemove = ConfigurationManager.AppSettings["SecurityProtocol.Remove"] | |
?.Split(',') | |
.Select(o => o.Trim()); | |
if (securityProtocolsToRemove == null) | |
{ | |
return; | |
} | |
foreach(var securityProtocolString in securityProtocolsToRemove) | |
{ | |
SecurityProtocolType securityProtocolEnum; | |
if (Enum.TryParse(securityProtocolString, out securityProtocolEnum)){ | |
// removes security protocol using binary operation | |
ServicePointManager.SecurityProtocol &= ~securityProtocolEnum; | |
} | |
} | |
} | |
private static void AddSecurityProtocols() | |
{ | |
var securityProtocolsAdd = ConfigurationManager.AppSettings["SecurityProtocol.Add"] | |
?.Split(',') | |
.Select(o => o.Trim()); | |
if (securityProtocolsAdd == null) | |
{ | |
return; | |
} | |
foreach (var securityProtocolString in securityProtocolsAdd) | |
{ | |
SecurityProtocolType securityProtocolEnum; | |
if (Enum.TryParse(securityProtocolString, out securityProtocolEnum)) | |
{ | |
// adds security protocol using binary operation | |
ServicePointManager.SecurityProtocol |= securityProtocolEnum; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment