请求的资源不支持具有适当修饰的 http 方法 'POST' - Web API

The requested resource does not support http method 'POST' with proper decoration - Web API

我在 Whosebug 上查看了大量“不支持的方法”错误,但 none 的建议解决方案对我有用。我有一个非常基本的 Web API 和一个 Web 方法,在 Post 请求时总是 returns 错误

'The requested resource does not support http method 'POST''

当 Post 人提出 POST 请求时。

我的 web.config 中没有定义 http 协议。我尝试过使用和不使用路由,也尝试过在传递的参数中不使用 [FromBody],但所有排列都失败了。

Request = http://myURL/api/XMLInput,请求的主体有一个我正在处理的 XML。

控制器

[Route("XMLInput")]
[System.Web.Http.HttpPost]
public IHttpActionResult PostXMLInput([FromBody] XmlDocument xml)
{
    XMLInput xmlInput = new XMLInput();
    xmlInput.XML = xml.InnerXml;
    return null;
}

WebApiConfig.cs

public static void Register(HttpConfiguration config)
{
    // Web API routes
    config.MapHttpAttributeRoutes();

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

提供的请求 http://myURL/api/XMLInput 不会匹配您的操作,除非该操作具有正确映射的路线

[RoutePrefix("api")]
public class MyController : ApiController {

    //POST api/XMLInput
    [Route("XMLInput")]
    [HttpPost]
    public IHttpActionResult PostXMLInput([FromBody] XmlDocument xml) { ... }
}

public class MyController : ApiController {

    //POST api/XMLInput
    [Route("api/XMLInput")]
    [HttpPost]
    public IHttpActionResult PostXMLInput([FromBody] XmlDocument xml) { ... }
}

来源:Attribute Routing in ASP.NET Web API 2