This isn’t an unusual error, you can find a lot of answers on Stack Overflow, for example.
For me I was using a simple
WebClient client = new WebClient();
With a send like this:
Stream data = client.OpenRead(arguments);
StreamReader reader = new StreamReader(data_to_send);
s = reader.ReadToEnd();
And getting the error in the title. It said that the endpoint had terminated the connection. Why would they do that?
TLS
So it seems that I was using a TLS version lower than the endpoint required.
You should be able to set it like this:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls |
As per this answer
SecurityProtocolType.Tls11 |
SecurityProtocolType.Tls12;
However, if you’re using an old, old .NET version or Server 2008 for example, then you don’t have these enumerations, but don’t worry, you can set it like this:
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; // 1.1=768, 1.2=3072 TLS versions WebClient client = new WebClient();
Where that 3072 = TLS 1.2, and 768 = TLS 1.1.
Comments