【发布时间】:2020-08-24 16:31:53
【问题描述】:
我对 MVC 中的异步编程没有太多经验,我不确定发生了什么。 我有一个具有功能的 MVC 控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> SectionMassUpdate(SectionMassUpdateViewModel model)
{
if (ModelState.IsValid)
{
var status = _sectionService.Update(model.SectionID, model.CompID, model.DateCompleted);
if (!status.IsValid)
{
ModelState.AddValidationErrors(status);
}
else { return Json(new { success = true }); }
}
return PartialView("_sectionUpdate", model);
}
在这个 post 函数中,你可以看到它调用了另一个类中的函数。被调用的函数
public ServiceStatus Update(int sectionID, int compID, DateTIme dateCompleted)
{
throw new Exception();
}
事实上,当我发布到控制器中的 SectionMassUpdate 函数时,什么也没有发生。它去调用,并且没有抛出异常或任何东西。如果我使 SectionMassUpdate 函数同步并删除异步和任务,则会引发异常。为什么会这样,我该怎么做才能抛出异常而不是页面什么都不做。
【问题讨论】:
-
你真的在等待函数吗?如果你不这样做,异常被多任务吞没是很常见的:stackoverflow.com/questions/61689900/…
-
这不可能!你确定
ModelState.IsValid是true吗?不可能。
标签: c# asp.net-mvc async-await