2015-04-14 23 views
19

Tôi có thiết lập API web cơ bản 2 với một số định tuyến cơ bản.Web Api 2 Post - UrlHelper.Link không được trả lại null

Dưới đây là tuyến đường mặc định và bài đăng để chèn. Khi tôi gọi bài đăng, bản ghi được tạo hoàn hảo trong cơ sở dữ liệu nhưng cuộc gọi "CreatedAtRoute" trả về lỗi 500 nêu rõ:

Ngoại lệ: "UrlHelper.Link không được trả về giá trị rỗng." Loại ngoại lệ: "System.InvalidOperationException"

Tại sao tôi nhận được lỗi này?

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

Trả lời

34

Vì bạn đang sử dụng thuộc tính định tuyến .. bạn phải đặt tên tuyến đường của bạn .. tức là [Route ("api/sách/{id}", Tên = "GetBookById")]

và việc sử dụng tên tuyến đường trên url.link của bạn() gọi

xem chi tiết ở đây .. http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#route-names

+0

Cảm ơn Ronnel, điều này sẽ làm các trick từ các thông tin nhưng tôi vẫn nhận được lỗi. // GET api/Casenote/5 [Route ("{casenoteId}/detail", Name = "GetSingleCasenote")] [ResponseType (typeof (client_admission_casenote))] và sau đó sử dụng tên trong bài: return CreatedAtRoute ("GetSingleCasenote ", mới {id = client_admission_casenote.casenote_id}, client_admission_casenote); } –

+1

Ah, đó là vì tôi đã thay đổi giá trị "id" mặc định thành "casenoteId". Tôi phải thay đổi thành: CreatedAtRoute ("GetSingleCasenote", mới {casenoteId = client_admission_casenote.casenote_id}, client_admission_casenote); } Cảm ơn bạn nhiều Ronnel !!! –

+0

im vui vì bạn đã làm việc đó. – Ronnel

Các vấn đề liên quan