【发布时间】:2021-10-15 09:16:12
【问题描述】:
我正在使用 ASP.NET Web Api,并且我已经设置了一个应该同时处理 GET 和 POST 的路由。当我尝试进行 POST 调用时,它会返回此错误
Response statuscode:'405'.
Response body: {"Message":"The requested resource does not support http method 'POST'."}
所以它试图调用 GET 函数而不是我设置的 POST 函数,即使我已经单独注册了它们。
这是我的两个函数
public class EmployeeController : ApiController
{
[System.Web.Http.HttpGet]
public object GetApplicationFunc([FromUri]EmployeeApplicationDTO request)
{
//Do GET specific stuff
}
[System.Web.Http.HttpPost]
public object PostApplicationFunc([FromBody]EmployeeApplicationDTO request)
{
//Do totally different POST stuff
}
}
然后这是我注册路线的方式
routes.MapHttpRoute(
name: "ApplicationGet",
routeTemplate: "application/apply",
defaults: new { controller = "Employee", action = "GetApplicationFunc"},
constraints: null);
routes.MapHttpRoute(
name: "ApplicationPost",
routeTemplate: "application/apply",
defaults: new { controller = "Employee", action = "PostApplicationFunc"},
constraints: null);
所以我指定了不同的 HTTP 路由,在同一个 'routeTemplate' 下,但只调用了“GetApplication()”,它的行为就像我的“PostApplication()”在发出 POST 请求时不存在。为什么???
【问题讨论】:
-
第一条路线获胜(即您已经定义了两次相同的路线 - 所以它只选择其中一条而忽略另一条)。您没有通过 post/get 限制任何一条路线。 stackoverflow.com/a/18406158/34092
标签: c# asp.net-web-api routes controller webapi