【问题标题】:Angular - Web api routing put methodAngular - Web api 路由放置方法
【发布时间】: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;
}

【问题讨论】:

    标签: angularjs asp.net-web-api


    【解决方案1】:

    指定[FromUri]和[FromBody]定义参数映射

    [HttpPut]
        [ActionName("PutUser/{userId}")]
        [ResponseType(typeof(void))]
        public IHttpActionResult PutUser([FromUri]int userId, [FromBody]User user)
        {
    

    您必须确保发布请求 HTTP 标头包含

    Content-Type: application/x-www-form-urlencoded
    

    【讨论】:

    • 感谢您的帮助,但我发现错误,我从操作名称中删除了参数 {userId} 然后它可以工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 2016-08-03
    • 2019-02-18
    • 2019-09-20
    • 2018-11-27
    • 2021-11-23
    相关资源
    最近更新 更多