我在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 }
);
}
答案 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) { ... }
}