使用$ http.post时HTTP 405无效方法(HTTP动词)

问题描述 投票:0回答:2

我使用web api来做一些奇怪的行为。我正在使用属性路由,并在服务器上发布帖子。控制器:

    [Route("names")]
    public ResultDTO SaveData(SomeDTO dto)
    {
       //somecode
        ...
    } 

而我正在呼唤它

     $http.post('/api/mycontroller/names', $scope.model.dto).success(function 
      (data) { ...

它正在发挥作用。但是,如果我重命名我的方法

    [Route("names")]
    public ResultDTO GetData(SomeDTO dto)
    {
       //somecode
        ...
    } 

它没有工作,我得到HTTP 405错误由于使用了无效的方法(HTTP动词)来尝试访问,因此无法显示您要查找的页面,

但是,如果我将$ http.post的调用更改为$ http.get,它就可以正常工作

显然,如果我发布数据,我不会将我的方法命名为GetSomeMethod,但我很好奇,不应该定义路由

   [Route("names")]

使用$ http.post,无论我如何实际调用将处理该帖子的方法?更具体地说,如果我将我的方法命名为GetSomething,为什么$ http.post将无法工作,但是如果我将方法名称更改为,例如,GotSomething或SaveSomething?

c# asp.net-web-api2 asp.net-mvc-routing
2个回答
4
投票

尝试添加路由属性

[HttpPost]

然后你可以根据自己的意愿命名你的行动。

Web API查看HTTP方法,然后查找名称以该HTTP方法名称开头的操作。例如,对于GET请求,Web API会查找以Get...开头的操作,例如GetContactGetAllContacts。该惯例仅适用于GETPOSTPUTDELETE方法。

查看更多here


0
投票

使用适当的动词为$http.post(***) - [HttpPost]$http.get(***) - [HttpGet]

© www.soinside.com 2019 - 2024. All rights reserved.