2017-08-16 52 views
1

我使用jQuery來進行API調用實體框架API控制器,我試圖調用put方法:jQuery的API調用實體框架API Put方法

[ResponseType(typeof(void))] 
public IHttpActionResult PutProfileIDClass(int id, ProfileIDClass profileIDClass) 
{ 
    if (!ModelState.IsValid) 
    { 
     return BadRequest(ModelState); 
    } 

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

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

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

    return StatusCode(HttpStatusCode.NoContent); 
} 

但是,當我使API通過jQuery調用我得到這個錯誤:405(方法不允許)

我做錯了什麼?

這裏是我的API調用

var data = { 
         id: result.data[0].id, 
         profileID: result.data[0].profileID, 
         taken: 'true' 
        }; 

        var json = JSON.stringify(data); 

$.ajax({ 
         url: '/api/ProfileIDAPI?id=' + result.data[0].id, 
         type: 'PUT', 
         contentType: "application/json; charset=utf-8", 
         data: json, 
         success: function (results) { 
         } 
        }); 

回答

1

如果你想要做一個PUT請求,你應該使用method: 'PUT'爲您$.ajax調用的一部分:

$.ajax({ 
    url: '/api/ProfileIDAPI?id=' + result.data[0].id, 
    method: 'PUT', 
    contentType: "application/json; charset=utf-8", 
    data: json, 
    success: function (results) { 
    } 
}); 
0

你有它安裝IIS ?在這種情況下,您必須將其配置爲處理您的「PUT」請求。

右鍵單擊側邊欄中的網站並轉到屬性。

轉到「主目錄」選項卡

在「應用程序設置」,點擊「配置」按鈕

在「應用程序配置」窗口中,應該有一個映射選項卡

只需選擇你想要映射的文件擴展名(在我的情況下,我希望ASP來映射GET,PUT,POST & DELETE),逗號分隔。這就是它,甚至不需要重新啓動。

希望這會有所幫助