0

我在 Fiddler 中测试了我的 WebAPI2 (DELETE),它工作正常,但在我的代码中出现了 Method not Allowed 的错误。

这是我的代码:

    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);
    }
4

2 回答 2

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。

于 2016-03-16T18:59:27.067 回答
0

尝试添加如下内容:

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

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

于 2016-03-16T18:21:33.823 回答