Somehow I got it.
In angluar I am passing the data.
$scope.http({ method: 'PUT', url: controllerurl, data: { data: data } });
And in my controller I read it and deserialize the json. I think it was how I had the angular passing the data before but I don't know.
HttpContent req = Request.Content;
string str = req.ReadAsStringAsync().Result;
var jObj = (JObject)JsonConvert.DeserializeObject(str);
string data= jObj["data"].ToString();