我使用空项目模板和 Web API 文件夹结构(在 Visual Studio 2013
中)创建了最简单的 WebAPI 2
应用程序。并且无法发出工作岗位请求。
这是我的 Controller
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方法不允许
。
我在这里错过了什么?谢谢。
更新:路由配置如下:
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 }
);
}
最佳答案
您的 POST 需要查询字符串中的参数 - payload
。如果没有此参数,它会寻找未定义的 Post() 函数,因此您会收到 405 错误。
关于asp.net - Web API 2 POST 方法不允许使用 405 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33785984/