我在Fiddler中测试了我的WebAPI2(删除),它工作正常,但在我的代码中出现了方法不允许的错误。
这是我的代码:
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);
}
尝试添加如下内容:
config.Routes.MapHttpRoute(
name: "YourControllerApi",
routeTemplate: "api/{controller}",
defaults: new { controller = "YourControler", action = "Delete", id = RouteParameter.Optional }
);
当然,您需要将"YourController"替换为控制器类的名称,并且可能需要调整routeTemplate(这假设您将调用YourURL/api/YourController。
我真的不知道这是否是一个好的做法,但我像这样修改了代码。
// 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。