请求的资源不支持带有正确装饰的http方法'POST' - Web API

时间:2017-02-02 02:36:30

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

我在StackOverflow上查看了大量'方法不支持'错误,但没有一个建议的解决方案对我有用。我有一个非常基本的Web API,带有一个Web方法,在Post请求上总是返回错误

  

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

从PostMan调用POST请求时。

我的web.config中没有定义httpprotocols。我已尝试使用和不使用Route,并且在参数中没有传递[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 }
    );
}

1 个答案:

答案 0 :(得分:2)

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

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

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

OR

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