尝试在我的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);
});
这是我的网络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();
}
答案 0 :(得分:0)
将您正在呼叫的网址改为“/ api / Account”。
您不需要“Controller”或“PasswordChange”。它应该根据方法名称中的“Put”和您使用的HTTP方法,自动将控制器名称(没有单词Controller)映射到PutPasswordChange方法。
你甚至可以将控制器方法重命名为“Put”,它会起作用。
N.B。根据您的浏览器和服务器组合,您可能需要在处理PUT和DELETE时执行一些启用OPTIONS请求的内容,但这是一个完全独立的主题。
答案 1 :(得分:0)
请参阅http://www.ryadel.com/en/error-405-methods-not-allowed-asp-net-core-put-delete-requests/ 我不得不添加发布网站web.config:
<modules runAllManagedModulesForAllRequests="false">
<remove name="WebDAVModule" />
</modules>