2015-08-21 35 views
0

我不明白爲什麼我的WebApi在我發佈時返回成功(200),但是當我放置時不返回任何內容。都成功更新數據庫。Restful WebApi V2 Put問題

我附上了我的兩種方法的代碼。 感謝 保羅

// PUT: api/items/5 
    [Route("api/items/{id:int}")] 
    [ResponseType(typeof(void))] 
    public async Task<IHttpActionResult> PutItem([FromBody] Item[] item, string updateitems) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     foreach (Item i in item) 
     { 
      if (updateitems.IndexOf(i.ItemId.ToString()) > 0) 
      { 
       db.Entry(i).State = EntityState.Modified; 
      } 
     } 
     await db.SaveChangesAsync(); 

     var iStatus = StatusCode(HttpStatusCode.OK); 
     return iStatus; 
    } 

    // POST: api/items 
    [Route("api/items")] 
    [ResponseType(typeof(Item))] 
    public async Task<IHttpActionResult> PostItem([FromBody] Item[] item) 
    { 
     int itemCount = 0; 
     string edititems = ""; 

     IHttpActionResult iStatus; 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     foreach (Item i in item) 
     { 
      if (!ItemExists(i.SurveyId, i.LineId)) 
      { 
       db.Items.Add(i); 
      } 
      else 
      { 
       var id = FindItemId(i.SurveyId, i.LineId); 
       edititems = edititems + ',' + id.ToString(); 
       i.ItemId = id; 
      } 
      itemCount ++; 
     } 
     await db.SaveChangesAsync(); 

     if (edititems.Length > 0) 
     { 
      IHttpActionResult result = PutItem(item, edititems).Result; 
     } 

     iStatus = StatusCode(HttpStatusCode.OK); 
     return iStatus; 
    } 

回答

0

你的代碼看起來不錯,我看到的唯一區別是在認沽的responseTyp的屬性,您有:[ResponseType(typeof(void))]

更改爲:[ResponseType(typeof(item))]

+0

謝謝JULITO。我錯過了,真的希望能解決這個問題。不幸的是,我還沒有得到一個狀態,只要代碼命中db.SaveChangesAsync,程序就離開了這個建築。 –

+0

原來是異步部分阻止了響應代碼。 –