WebAPI2:[DELETE] CODE中不允许使用方法,但在Fiddler中它正在工作

时间:2016-03-16 17:57:57

标签: c# httpclient webapi2

我在Fiddler中测试了我的WebAPI2(DELETE)并且它工作正常,但在我的代码中有一个错误的方法不允许。

这是我的代码:

    public async Task<bool> deleteUser(int id)
    {
        string URI = "http://api.danubeco.com/api/userapps";

        using (var client = new HttpClient())
        {   
            var response = await client.DeleteAsync(String.Format("{0}/{1}", URI, id));

            var myobject = await response.Content.ReadAsStringAsync();

            return Convert.ToBoolean(myobject);
        }            
    }
    // DELETE: api/userapps/5        
    [ResponseType(typeof(userapp))]
    public IHttpActionResult Deleteuserapp(int id)
    {
        userapp userapp = db.userapps.Find(id);
        if (userapp == null)
        {
            return NotFound();
        }

        db.userapps.Remove(userapp);
        db.SaveChanges();

        return Ok(userapp);
    }

2 个答案:

答案 0 :(得分:0)

尝试添加以下内容:

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

当然,您需要将“YourController”替换为控制器类的名称,并且您可能需要调整routeTemplate(这假设您将调用YourURL / api / YourController。

答案 1 :(得分:0)

我真的不知道这是不是一个好习惯,但我修改了这样的代码。

    // DELETE: api/userapps/5   
    [HttpGet]
    [Route("api/userapps/deluser/{id}")]
    [ActionName("deluser")]
    [ResponseType(typeof(bool))]
    public bool Deleteuserapp(int id)
    {
        userapp userapp = db.userapps.Find(id);
        if (userapp == null)
        {
            return false;
        }

        db.userapps.Remove(userapp);
        db.SaveChanges();

        return true;
    }
    var response = await client.GetAsync(String.Format("{0}/{1}", URI, 

并使用GetAsync而不是DeleteAsync。