Amigo,
Tente utilizar o WEBCLIENT, abaixo um exemplo baseado no seu codigo:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
using (var wc = new WebClient() { Encoding = Encoding.UTF8 })
{
wc.Headers.Add("User-Agent", "Mozilla/5.0 (compatible; Rigor/1.0.0; http://rigor.com)");
wc.Headers.Add("Content-Type", "application/json");
wc.Headers.Add("Accept", "*/*");
wc.Headers.Add("Authorization", string.Concat("Basic ", Convert.ToBase64String("sua chave")));
var Uri = new Uri(string.Concat("https://www.meusite.com/api/control/", controlId ,"/task"));
var parameters = new Dictionary<string, string> { { "name", "valor" } };
var jsonRetorno = wc.UploadString(Uri, "POST ou PUT", JsonConvert.SerializeObject(parameters));
}