I got mad the other day, trying to do a simple wget (i.e. invoke-webrequest) to an Azure Function I made and I was getting:
The underlying connection was closed: An unexpected error occurred on a send
I tried switching to .NET Webclient but still same error.
What was more frustrating is that it worked on my dev machine, worked on the server I was running to code on in a browser, just not in powershell.
The Fix
Apparently PowerShell version 5 defaults to TLS 1.0. Azure Functions require TLS 1.2. The fix is super simple, just add this in your code on its own line:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12