删除不支持webapi asp.net

时间:2016-01-20 14:31:26

标签: c# asp.net asp.net-web-api

我有一个简单的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

问题是我不明白为什么会出现这种限制,如果我能打破它。 谢谢

1 个答案:

答案 0 :(得分:1)

最后我解决了。问题基本上是参数中的装饰器。如果我不使用[FromUri]它正在工作,该函数从URL获取参数。

所以最后我写了。

    public void DeleteFromQueue(string id)
    {
         //DELETE operation
    }

当我打电话

DELETE http://localhost:9000/api/controller/1223asd

我正在使用id参数“1223asd”