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

HTTP 405 invalid method (HTTP verb) when using $http.post

我在使用网络 api 时遇到了一些奇怪的行为。我正在使用属性路由,并在服务器上制作 post 。 控制器:

    [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

,它会起作用

显然,如果我正在 posting 数据,我不会以 GetSomeMethod 开头命名我的方法,但我很好奇,不应该定义路由

   [Route("names")]

与 $http.post 一起工作,无论我实际上如何调用将处理该 post 的方法?更具体地说,如果我将我的方法命名为 GetSomething,为什么 $http.post 不起作用,但如果我将方法名称更改为例如 GotSomething 或 SaveSomething,它会起作用?

尝试添加路由属性

[HttpPost]

然后你可以随意命名你的动作。

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

查看更多here

$http.post(***) - [HttpPost]$http.get(***) - [HttpGet]

使用适当的动词