Web Api 2 Post - UrlHelper.Link must not return null

Aaron Lind picture Aaron Lind · Apr 14, 2015 · Viewed 12.4k times · Source

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);
    }

Answer

Ronnel picture Ronnel · Apr 15, 2015

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