I have a web API 2 controller:
[HttpGet]
[Route("api/MyRoute/{date:datetime}")]
public IHttpActionResult Get(DateTime date)
{
return Ok(date);
}
And an angular $http get call:
$http.get("/api/MyRoute/" + new Date());
This doesn't work, I get a 404 error.
I also get this error after the 404:
XMLHttpRequest cannot load http://localhost:2344/api/MyRoute/2017-06-28T00:00:00.000Z. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
But if I change the parameter to anything but a date it works.
I've tried new Date().toISOString() and that does that same.
So how do I pass a date from Angular to a Web API controller?
The problem seems to be with the datetime specification in the routing attribute. The solution was to just remove it and define the route as this
[HttpGet]
[Route("api/MyRoute")]
public IHttpActionResult Get(DateTime date)
{
return Ok(date);
}
And then call the api from the client by
$http.get("/api/MyRoute?date=" + new Date().toISOString());
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With