找不到 OData 控制器上的发布方法

本文关键字:方法 布方法 OData 控制器 找不到 | 更新日期: 2023-09-27 17:55:24

我有一个OData控制器。删除和修补方法效果很好,但是我无法点击 Post 方法。我必须发布整个对象还是只发布密钥?

运行良好的补丁请求:

补丁 http://localhost:50161/odata/Carousel(3)

返回 404 的 Post 请求:

邮政 http://localhost:50161/odata/Carousel(3)

我没有向任何带有帖子请求的正文发送

控制器:

public class CarouselController : ODataController<CarouselTableDto>
{
    private readonly CarouselService _service;
    public CarouselController(CarouselService service)
    {
        _service = service;
    }
    public class ModelRegistration : ModelRegistration<CarouselTableDto> { }
    protected override IQueryable<CarouselTableDto> GetData()
    {
        return _service.QueryAll();
    }
    public async Task<IHttpActionResult> Patch([FromODataUri] int key, Delta<CarouselTableDto> data)
    {
        ChangePassivable(data, active => _service.SetIsActive(key, active));
        return StatusCode(HttpStatusCode.NoContent);
    }
    public async Task<IHttpActionResult> Delete([FromODataUri] int key)
    {
        _service.Delete(key);
        return StatusCode(HttpStatusCode.NoContent);
    }
    [HttpPost]
    public IHttpActionResult Post([FromODataUri] int key)
    {
        _service.Copy(key);
        return StatusCode(HttpStatusCode.NoContent);
    }
}

找不到 OData 控制器上的发布方法

如果要发布实体,则应发布到实体集,例如.../轮播

和有效载荷,例如:

        string payload = @"{ 
            ""ID"": 3, 
            ""Name"": ""def"" 
        }";