API 在一种型号上支持删除,但在另一种型号上不支持

API Supports DELETE on one model, but not another

我已经为两个对象构建了 DELETE 方法。目前,用户对象可以接受 DELETE 请求并且工作正常,但是请求对象给我以下消息:

{
"Message": "The requested resource does not support http method 'DELETE'."
}

用户代码和调用是:

// DELETE: api/Users/5
        [Route("{id}"), ResponseType(typeof(User))]
        public IHttpActionResult DeleteUser(string id)
        {
            User user = db.Users.Find(id);
            if (user == null)
            {
                return NotFound();
            }

            db.Users.Remove(user);
            db.SaveChanges();

            return Ok(user);
        }

http://localhost:8080/api/users/2
content-type: application/json
DELETE

请求代码和调用如下:

// DELETE: api/ServiceRequests/5
        [Route("{id}:int"), ResponseType(typeof(ServiceRequest))]
        public IHttpActionResult DeleteServiceRequest(int id)
        {
            ServiceRequest serviceRequest = db.ServiceRequests.Find(id);
            if (serviceRequest == null)
            {
                return NotFound();
            }

            db.ServiceRequests.Remove(serviceRequest);
            db.SaveChanges();

            return Ok(serviceRequest);
        }


http://localhost:8080/api/servicerequests/2
content-type: application/json
DELETE

奇怪的是,如果我将 Route("{id}:int") 更改为 Route("{id}"),它运行良好,但消除了我的整数约束。

如何允许对服务请求的 DELETE 访问?

路由属性语法错误,应该是:

[Route("{id:int}"), ResponseType(typeof(ServiceRequest))]

路由约束应该在{}