【发布时间】:2017-05-24 08:47:30
【问题描述】:
我的应用 Angular + wep api 中的路由有点问题。我想把用户,它不工作。服务器返回 404 和错误:
加载资源失败:服务器响应状态为 404(未找到)
和
Message":"找不到与请求 URI 'http://localhost:53544/api/Users/PutUser/1'匹配的 HTTP 资源。","MessageDetail":"在控制器 'Users' 上找不到与名称 'PutUser' 匹配的操作。"
很奇怪,因为方法存在。
我的全部代码如下:
我的路线:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我的put方法:
[HttpPut]
[ActionName("PutUser/{userId}")]
[ResponseType(typeof(void))]
public IHttpActionResult PutUser(int userId, User user)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (userId != user.Id)
{
return BadRequest();
}
db.Entry(user).State = EntityState.Modified;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!UserExists(userId))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
我的角度放置方法:
this.PutUser = function (userId, user) {
var promise = $http({
method: 'PUT',
url: 'api/Users/PutUser/' + userId,
data: user
})
.then(function (response) {
return "update";
},
function (response) {
return response.statusText;
});
return promise;
}
【问题讨论】: