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

流过昼夜 提交于 2019-12-22 01:24:05

问题


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

回答1:


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



来源:https://stackoverflow.com/questions/29636095/web-api-2-post-urlhelper-link-must-not-return-null

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!