0
我有一個簡單的webApi應用程序,我使用方法GET POST和DELETE。我面臨的問題是DELETE操作。當功能標題不等於POST的標題時,它不起作用。我收到錯誤DELETE webapi asp.net不支持
「請求的資源不支持http方法DELETE。」
這是我的控制器代碼。
public class MyController : ApiController
{
public List<JobInfo> Get()
{
//GET OPERATION
}
public void Post([FromBody]JToken body)
{
//POST OPERATION
}
public void Delete([FromUri]string id)
{
//DELETE OPERATION
}
}
我的服務器是這樣配置的。
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
HttpConfiguration configuration = new HttpConfiguration();
configuration.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
app.UseWebApi(configuration);
}
}
如果我宣佈DELETE操作是這樣的:
public void Post([FromBody]JToken body)
我讓它運行。問題是我需要來自uri的id(API是這樣定義的)。我搜索並發現這PUT and Delete not working with ASP.NET WebAPI and Database on Windows Azure
問題是,我不明白爲什麼這個限制,如果我可以打破它。 謝謝
有什麼限制嗎?在你連接的問題中,OP有一個錯字。如果您指定要在路由中提取名稱應爲'id'的參數,則您的方法應該有一個名爲'id'的參數。順便說一句,你的'Get()'方法不接受任何參數。你如何獲得一個特定的JobInfo對象? –
我以前遇到過客戶端和服務器端的動詞限制。查看X-HTTP-Method-Override標頭。這總是給你一個解決方法。 web api不支持它開箱即用,但創建一個消息處理程序來支持它並不困難 – rdans
@PanagiotisKanavos我訪問數據庫並返回列表。該操作按設計進行。我的問題是爲什麼我不能用與POST不同的定義來聲明Delete函數。如果我用與DELETE相同的方式聲明POST和DELETE函數,但在DELETE中,我需要從URI獲取參數,而不是從BODY獲取參數。 – acostela