繁体   English   中英

无法获取我的一个put请求(获取CORS错误)

[英]Cannot get one of my put requests to work (getting CORS error)

我难以让我的相对简单的PUT请求正常工作。 在我的控制器中,我有一个编辑(Put)方法,它工作正常,但是,我有一个使用的第二个PUT请求,作为拖放重新排序清单中的步骤,此方法正在获取CORS错误/ HTTP 500当我尝试以角度或邮差运行它时。 我很难理解一个例程是如何工作的,但另一个例程是错误的

我已经尝试过调试,并且验证数据是否正确地传递给控制器​​操作,但它没有保存到数据库,在它到达我的foreach语句后,然后保存,它被炸出来

这是编辑的代码,有效

[HttpPut("{stepId}")]
public async Task<ActionResult> EditStep(int stepId, LogChecklistSteps step)
{        
    step.Idstep = stepId;
    _repo.EditStep(step);
    var history = FileHistory(step, "Draft", "Edited a Step");

    _repo.Add(history);
    await _repo.SaveAll();
    return NoContent();
}

这是我遇到问题的代码

[HttpPut("reorder")]
public async Task<ActionResult> ReorderSteps(LogChecklist checklist)
{
    foreach(var s in checklist.LogChecklistSteps)
    {
        _repo.ReorderSteps(s);
    }

    await _repo.SaveAll();
    return NoContent();
}

和我的回购中的代码

public void EditStep(LogChecklistSteps step )
{
    _ctx.Entry(step).State = EntityState.Modified;
}

public void ReorderSteps(LogChecklistSteps step)
{
    _ctx.LogChecklistSteps.Update(step);
}

public async Task<bool> SaveAll()
{
    return await _ctx.SaveChangesAsync() > 0;
}

事实证明我的问题是我的脚手架dbcontext将我的Step字段列为复合键。 这个项目是针对一个旧数据库,设计它的人,使用复合键而不是唯一ID,我在测试系统中修复了这个,一旦我从模型构建器中删除了该字段,我的代码就开始工作了。

谢谢大家查看我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM