【发布时间】:2017-03-18 13:33:15
【问题描述】:
我在尝试对我的 Web api 控制器使用有角度的 $http.put 时收到 405 Method not found 错误。
我已经尝试了所有我能找到的东西,主要是与 WebDav 相关的。我已经完成了另一个 Web api 项目,但从未遇到过这个问题。下面是我在角度内的示例调用。令人沮丧的是,我在另一个 Web api 项目的 Web 配置中的一切基本相同,似乎工作正常。
return $http.put("/api/Account/PasswordChange",{params:{"currentPass":currentPass,"newPass":newPass,"confirmPass":confirmPass}})
.then(function (response) {
return response.data;
},
function (response) {
return $q.reject(response);
});
这是我的 web api 路由
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这里是被调用的 web api 控制器
public IHttpActionResult PutPasswordChange(string currentPass,string newPass,string confirmPass)
{
return Ok();
}
【问题讨论】:
-
你是否在你的路由中设置了一个断点来查看它是否被命中?
-
什么都没有被击中,我得到的只是 405 方法未找到。如果我向同一个控制器、不同的功能发帖,它工作正常......它唯一的 http 放置和删除。
-
那么需要配置路由以响应 PUT 请求。您可以编辑您的帖子以包含您的后端代码吗?
-
好的,我已经添加了。
-
如果你的控制器定义为
class MyController,那么URL应该只使用/My/...,而不是/MyController/...。
标签: asp.net-mvc asp.net-web-api asp.net-web-api2