2016-04-23 59 views
0

沒有人知道如何編輯記錄!沒有人執行此操作嗎? POST,GET和DELETE都可以工作,但PUT,不管你做什麼,都不起作用。沒有人使用ASP.NET的Web API2編輯記錄?爲什麼不能用Web API 2編輯記錄?這不可能嗎?

我已經使用Hurl.it和POSTMAN,它們都不能使用PUT執行編輯。它只會產生一個400錯誤 - 沒有關於錯誤的信息,因爲請求沒有任何錯誤!

世界上有人設法用此編輯記錄嗎?當賞金可用時,我會盡我所能 - 請有人告訴我們如何執行此操作。

有沒有人甚至沒有注意到這個API不能完全工作?我不知道還有什麼要問的! ASP.NET論壇上沒有人知道如何去做。

HURL.IT

  1. yoururl/API /對象/ ID
  2. 參數字段名:值(全部)
  3. 點擊 「啓動請求」
  4. 字段被編輯

在Web API 2 - 400錯誤...沒有其他信息(因爲請求沒有錯誤)

郵差 - 同上(或多或少)

代碼中的控制器:

// PUT: api/Table1s/5 
    [ResponseType(typeof(void))] 
    public IHttpActionResult PutTable1(int id, Table1 table1) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     if (id != table1.TestID) 
     { 
      return BadRequest(); 
     } 

     db.Entry(table1).State = EntityState.Modified; 

     try 
     { 
      db.SaveChanges(); 
     } 
     catch (DbUpdateConcurrencyException) 
     { 
      if (!Table1Exists(id)) 
      { 
       return NotFound(); 
      } 
      else 
      { 
       throw; 
      } 
     } 

     return StatusCode(HttpStatusCode.NoContent); 
    } 
+0

[如何創建一個最小的,完整的,並且可驗證的示例](http://stackoverflow.com/help/mcve)的您已經嘗試了什麼至今。這樣人們可以用它來重現問題並給出更好的答案。 – Nkosi

+0

[爲什麼我不能使用hurl.it或POSTMAN在Web API 2上執行簡單的PUT編輯?](http://stackoverflow.com/questions/36800616/why-can-i-not-perform-a -simple-put-edit-on-web-api-2-use-hurl-it-or-postman) – Nkosi

+0

HTTP PUT - 我在問題中說過。這是一個簡單的HTTP請求。你使用PUT,URL和id,然後把參數。它不適用於web api2。這是一個API,所以我假設它可以執行操作來編輯記錄 - 它給出了一個400錯誤,似乎沒有關於它爲什麼不起作用的信息。 –

回答

1

如果您正在使用Attribute Routing,您的控制器可這個樣子......

[RoutePrefix("api/Table1s")] 
public class Table1Controller : ApiController { 

    // PUT: api/Table1s/5 
    [HttpPut] 
    [Route("{id:int}")] 
    [ResponseType(typeof(void))] 
    public IHttpActionResult PutTable1(int id, [FromBody]Table1 table1) {...} 

} 

對該行爲的請求可能看起來像...

PUT http://localhost:5076/api/Table1s/5 HTTP/1.1 
User-Agent: Fiddler 
Host: localhost:5076 
Content-Type: application/json 
Content-Length: 55 

{ 
    "fieldname1":"value1", 
    "fieldname2":"value2" 
} 

請確保您配置的屬性以及默認配置路由

//.... 
config.MapHttpAttributeRoutes() 

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional }, 
); 
//....