I have a jquery method which looks like this:
$.post("/api/amazon/signature", { "policy": policy }, function (data) { console.log(data); }); the api method looks like this~:
// POST api/amazon/signature [HttpPost] [Route("api/amazon/signature")] public IHttpActionResult GetSignature([FromBody]string policy) { var bKey = Encoding.ASCII.GetBytes(ConfigurationManager.AppSettings["AWSSecretKey"]); var hmacSha1 = new HMACSHA1(bKey); var bPolicy = Encoding.ASCII.GetBytes(policy); var hash = hmacSha1.ComputeHash(bPolicy); var encoded = Convert.ToBase64String(hash); return Ok(encoded); } but when I run this code policy is always null! If I change my method to this:
public class Signature { public string Policy { get; set; } } // POST api/amazon/signature [HttpPost] [Route("api/amazon/signature")] public IHttpActionResult GetSignature([FromBody]Signature model) { var bKey = Encoding.ASCII.GetBytes(ConfigurationManager.AppSettings["AWSSecretKey"]); var hmacSha1 = new HMACSHA1(bKey); var bPolicy = Encoding.ASCII.GetBytes(model.Policy); var hash = hmacSha1.ComputeHash(bPolicy); var encoded = Convert.ToBase64String(hash); return Ok(encoded); } and modify my jquery to this:
$.post("/api/amazon/signature", { "Policy": policy }, function (data) { console.log(data); }); it works fine....
Can someone tell me why?