Web API 2中的POST方法:405方法不允许。

3

我使用空项目模板和Web API文件夹结构(在Visual Studio 2013中)创建了最简单的WebAPI 2应用程序。但无法使POST请求工作。

这是我的控制器:

public class XmlFileController : ApiController
{
    public IHttpActionResult Post(string payload)
    {
        return Ok();
    }

    public string Get()
    {
        return "Hello world";
    }
}

我没有改变路由或任何内容。据我理解,路由应该按照名称约定工作。
调用GET http://localhost:51356/api/XmlFile时,我会收到Status 200 OK
当使用字符串有效载荷和Content-Type text/plain调用POST http://localhost:51356/api/XmlFile时,我会收到Status 405 Method Not Allowed
我错过了什么?谢谢。
更新:以下是路由配置:
public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

1
你的路由配置和请求代码是什么样子? - Jasen
1
@Guanxi 谢谢,修复很快,在指出问题后。已更新方法签名为 public IHttpActionResult Post([FormBody] string payload) - mimo
1个回答

3

您的POST请求需要在查询字符串中传递一个参数 - payload。如果没有这个参数,它会寻找未定义的Post()函数,因此您会收到405错误。


1
解决方案可能是将[FromBody]属性添加到字符串参数中。 - Bon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接