我在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);
}
答案 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。