【问题标题】:Error occurs while calling HttpPut and HttpDelete in C# WebAPI在 C# WebAPI 中调用 HttpPut 和 HttpDelete 时发生错误
【发布时间】:2017-08-28 18:24:12
【问题描述】:

我有一个 WebAPI 2 控制器。很简单,很简单:

public class ValuesController : ApiController
{
    // GET api/values
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/values/5
    public string Get(int id)
    {
        return "value";
    }

    // POST api/values
    public void Post([FromBody]string value)
    {
    }

    // PUT api/values/5
    public void Put(int id, string value)
    {
    }

    // DELETE api/values/5
    public void Delete(int id)
    {
    }
}

Get 和 Post 方法运行良好。但是 Delete 和 Put 不起作用。并出现此错误:

HTTP 错误 404.0 - 未找到 您要查找的资源已被删除、名称已更改或暂时不可用。

*所有方法都在 IIS Express 中运行良好。但不在 IIS 本地 知道为什么会这样吗? 提前致谢

【问题讨论】:

    标签: c# asp.net-web-api


    【解决方案1】:

    您从哪里向此方法发送请求?来自 AJAX 请求? GET(带 id)PUT 和 DELETE 具有相同的路由 URL。如果您通过 AJAX 调用,则必须指定动词。否则应用程序会混淆 GET、PUT 和 DELETE。

    【讨论】:

    • 我的客户正在从他的 Android 应用程序调用我的 API。他指定了动词。我也从邮递员那里检查过。结果相同。
    • 我已经从 Postman 尝试了您的确切代码,它正在工作。您是否尝试将 put 参数作为查询字符串,如下所示:localhost:62454/api/values/5?value=str
    • 这正是我正在做的:localhost/pinstogram/api/Values/5 in PUT 方法
    • 我认为我的配置文件中一定有问题。因为我尝试了一个新的 WebAPI 应用程序并且它有效。但我找不到错误。
    • 你检查你的 WebApiConfig.cs 的路由映射了吗?您是否检查了您的 web.config 是否“处理程序”部分中允许所有动词?
    猜你喜欢
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    相关资源
    最近更新 更多