I have a basic web API 2 setup with some basic routing.
Below is the default route and post for inserts. When I call the post the record is created perfectly in the database but the "CreatedAtRoute" call returns a 500 error stating:
ExceptionMessage: "UrlHelper.Link must not return null." ExceptionType: "System.InvalidOperationException"
Why would I receive this error?
[RoutePrefix("api/casenotes")]
public class CasenoteController : ApiController...
// POST api/Casenote
[Route("")]
[ResponseType(typeof(client_admission_casenote))]
public async Task<IHttpActionResult> Postclient_admission_casenote (client_admission_casenote client_admission_casenote)
{
Request.GetRequestContext().IncludeErrorDetail = true;
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.client_admission_casenote.Add(client_admission_casenote);
await db.SaveChangesAsync();
return CreatedAtRoute("DefaultApi", new { id = client_admission_casenote.casenote_id }, client_admission_casenote);
}
Since you are using attribute routing.. you have to name your route.. i.e. [Route("api/books/{id}", Name="GetBookById")]
and the use the route name on your url.link() call
see details here.. http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#route-names