无法使我的一个放置请求工作(出现CORS错误)

时间:2019-06-07 14:12:08

标签: c# asp.net-core

我很困惑让我相对简单的PUT请求能够正常工作。在我的控制器中,我有一个edit(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;
}

1 个答案:

答案 0 :(得分:0)

原来我的问题是脚手架dbcontext将我的“步骤”字段列为复合键。该项目是针对一个旧数据库的,该数据库的设计者使用了组合键而不是唯一的ID,我在测试系统中对其进行了修复,一旦从模型构建器中删除了该字段,我的代码便开始工作。

谢谢大家关注我的问题。