我有一个简单的webApi应用程序,我使用GET POST和DELETE方法。我面临的问题是DELETE操作。当函数标题不等于POST的函数标题时,它不起作用。我收到了错误
"请求的资源不支持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
问题是我不明白为什么会出现这种限制,如果我能打破它。 谢谢
答案 0 :(得分:1)
最后我解决了。问题基本上是参数中的装饰器。如果我不使用[FromUri]它正在工作,该函数从URL获取参数。
所以最后我写了。
public void DeleteFromQueue(string id)
{
//DELETE operation
}
当我打电话
DELETE http://localhost:9000/api/controller/1223asd
我正在使用id参数“1223asd”