【问题标题】:The requested resource does not support http method 'POST' with proper decoration - Web API请求的资源不支持具有适当装饰的 http 方法“POST” - Web API
【发布时间】:2017-06-19 00:00:47
【问题描述】:

我在 StackOverflow 上查看了大量“method not supported”错误,但没有一个建议的解决方案对我有用。我有一个非常基本的 Web API,它带有一个 Web 方法,在发布请求时总是返回错误

'请求的资源不支持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 }
    );
}

【问题讨论】:

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


    【解决方案1】:

    提供的请求 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

    【讨论】:

    • 这解决了我遇到的问题,谢谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 2018-06-24
    • 1970-01-01
    • 2013-03-05
    • 2020-09-19
    • 2012-06-15
    • 2014-06-23
    相关资源
    最近更新 更多