【问题标题】:Controller not hitting Delete method in WebApi控制器没有在 WebApi 中点击 Delete 方法
【发布时间】:2021-04-07 10:14:35
【问题描述】:

我对 WebApi 中的删除方法有疑问。它不是从控制器击中的。 这是一个 Web Api 代码,具有属性路由以及接受相同参数的 Get 和 Delete 方法。 当调试器转到控制器时,它不会从 DeleteAsync() 转到 Web Api 中的 Delete 方法。 WebApi 代码:


        [Route("api/Products/{id}")]
        public IHttpActionResult Get(int id)
        {
            List<ProductModel> showProductById = dbOperations.ShowProductById(id);
            return Ok(showProductById);
        }
        
        [Route("api/Products/{id}")]
        public IHttpActionResult Delete(int id)
        {
            int rowId = dbOperations.DeleteProduct(id);
            return Ok(rowId);
        }

控制器代码:

 public ActionResult DeleteProduct(int id)
        {
            productApiClient.BaseAddress = new Uri(ConfigurationManager.AppSettings["BaseAddress"]);
            var response = productApiClient.DeleteAsync("Products/" + id).Result;
            return RedirectToAction("Index");

        }

【问题讨论】:

  • 默认情况下,控制器方法用于 HTTP GET。在 Delete 方法中添加 [HttpDelete] 属性。
  • 是的,我也用过,但没用。在我在提琴手上执行 web api 并显示“方法”不允许之后。然后我在 webconfig 中更改了一些代码,它起作用了。代码-

标签: c# model-view-controller webapi


【解决方案1】:

您需要标记可用于访问该方法的 HTTP 动词。您可以通过设置相应的属性来做到这一点:

[HttpGet("api/Products/{id}")]
public IHttpActionResult Get(int id)
...


[HttpDelete("api/Products/{id}")]
public IHttpActionResult Delete(int id)
...

编辑:使用 AspNetCore 5.0.0 版

【讨论】:

  • 显示错误 HttpDeleteAttribute 不包含采用 1 个参数的构造函数。顺便说一句,问题已通过在 web.config 文件中添加一些代码行来解决。
猜你喜欢
  • 2012-03-30
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多