2015-04-14 38 views
19

我有一些基本的Web API 2設置與一些基本路由。Web Api 2發佈 - UrlHelper.Link不能返回null

下面是插入的默認路徑和文章。當我打電話時,記錄在數據庫中完美創建,但「CreatedAtRoute」調用返回500錯誤,說明:

ExceptionMessage:「UrlHelper.Link一定不能返回空值。 ExceptionType:「System.InvalidOperationException」

爲什麼我會收到此錯誤?

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

回答

34

由於您使用的屬性路由..你必須命名您的路線..即 [路線( 「API /書籍/(編號)」,名稱= 「GetBookById」)

和您url.link()使用路由名稱叫

在這裏看到的細節.. http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#route-names

+0

感謝Ronnel,這應該從信息做的伎倆,但我仍然得到錯誤。 //獲取api/Casenote/5 [Route(「{casenoteId}/detail」,Name =「GetSingleCasenote」)] [ResponseType(typeof(client_admission_casenote))]然後在post中使用名稱:return CreatedAtRoute(「GetSingleCasenote 「,new {id = client_admission_casenote.casenote_id},client_admission_casenote); } –

+1

啊,這是因爲我將默認的「id」值更改爲「casenoteId」。我必須更改爲:CreatedAtRoute(「GetSingleCasenote」,新的{casenoteId = client_admission_casenote.casenote_id},client_admission_casenote); }多謝Ronnel !!! –

+0

我很高興你已經完成了。 – Ronnel