如何修复 - 请求的资源不支持http方法'POST'

Kgn*_*web 8 c# asp.net-web-api postman

以下是WebAPI操作.关于以下错误的谷歌搜索: -

请求的资源不支持http方法'POST'

我得到了很多链接并相应地更新了我的api,但我仍然得到同样的错误.

但仍然在通过post post调用上述内容时会抛出错误.

错误

我该如何摆脱这个错误?

还可以在不使用[FromBody]方法参数列表中的属性的情况下修复此问题吗?

任何帮助/建议高度赞赏.谢谢.

Ser*_*kiy 7

您已声明需要 url 参数的路由

[Route("rename/{userId}/{type}/{title}/")]
Run Code Online (Sandbox Code Playgroud)

因此,当您向api/customer/rename它发送请求时,与此方法不匹配。您应该从路由参数中删除您在请求正文中传递的参数

[Route("rename")]
Run Code Online (Sandbox Code Playgroud)

确保RoutePrefix("api/customer")您的控制器具有适当的属性。


第二个问题是多个[FromBody]参数。你会得到无法绑定多个参数的错误。有一个限制 - 您只能将一个参数标记为 FromBody。请参阅发送简单类型注释:

Web API 最多读取一次请求体,因此请求体中只能有一个动作参数。如果需要从请求正文中获取多个值,请定义复杂类型。

您应该创建将保存所有参数的复杂类型

public class RenameModel
{
   public int UserId { get; set; }
   public string Type { get; set; }
   public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并将方法签名更改为

[HttpPost]
[Route("rename")]
public IHttpActionResult Rename(RenameModel model)
Run Code Online (Sandbox Code Playgroud)

并将请求数据作为application/x-www-form-urlencoded 发送