В моем проекте настроено множество API, и большинство из них работают на этом этапе. Тем не менее, я изо всех сил пытаюсь заставить DELETE
API работать над нажатием кнопки на моей странице .aspx.
У меня есть этот код для DELETE
API, включая мой маршрут атрибута, который я создал:
public class ReviewController : ApiController
{
private ReviewAPIModel db = new ReviewAPIModel();
[Route("api/Review/delete/{id}")]
[HttpDelete]
[ResponseType(typeof(review))]
public IHttpActionResult Deletereview(int id)
{
review review = db.review.Find(id);
if (review == null)
{
return NotFound();
}
db.review.Remove(review);
db.SaveChanges();
return Ok(review);
}
}
Я уверен, что моя атрибутная маршрутизация включена правильно.
У меня есть этот код для моего нажатия кнопки:
protected void repReviews_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:#####/api/review/delete");
var deleteTask = client.DeleteAsync(Convert.ToString(e.CommandArgument));
deleteTask.Wait();
var result = deleteTask.Result;
if (result.IsSuccessStatusCode)
{
Response.Redirect("MyReviews.aspx");
}
Response.Redirect("MyReviews.aspx");
}
}
}
Когда я пытаюсь запустить код, нажав кнопку, он проходит через все это (я проверял, используя точки останова). Тем не менее, запись не удаляется из базы данных, и все еще на экране.
Все рекомендации, которые я нашел для этого типа сценария, это либо А) использование источника данных SQL, либо Б) не использование маршрутизации атрибутов (при этом А) является основной проблемой при поиске полезного результата Google).
Как мне соединить эти две вещи вместе?
ETA: Контекст БД:
public partial class ReviewAPIModel : DbContext
{
public ReviewAPIModel()
: base("name=ReviewAPIModel")
{
}
public virtual DbSet<review> review { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}