C# MVC异步函数未捕获异常
我对MVC中的异步编程没有太多经验,我也不确定到底发生了什么。 我有一个具有以下功能的MVC控制器:C# MVC异步函数未捕获异常,c#,asp.net-mvc,async-await,C#,Asp.net Mvc,Async Await,我对MVC中的异步编程没有太多经验,我也不确定到底发生了什么。 我有一个具有以下功能的MVC控制器: [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> SectionMassUpdate(SectionMassUpdateViewModel model) { if (ModelState.IsValid)
[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);
}
就这样,当我发布到控制器中的SectionMassUpdate函数时,什么也没有发生。它转到调用,没有抛出异常或其他任何东西。如果我使SectionMassUpdate函数同步并删除async和Task,则会引发异常。为什么会这样?我该怎么做才能抛出异常,而不是让页面什么都不做 简单的答案是使您的服务方法更新异步,并在控制器中的调用语句中使用wait。简单的答案是使您的服务方法更新异步,并在控制器中的调用语句中使用wait。您真的在等待函数吗?如果您不这样做,异常被多任务处理吞没是很常见的:那是不可能发生的!您确定
ModelState.IsValid
是否为true
?不可能。你真的在等功能吗?如果您不这样做,异常被多任务处理吞没是很常见的:那是不可能发生的!您确定ModelState.IsValid
是否为true
?不可能是.ModelState.IsValid是真的Paulo Morgado。当我单步执行时,它进入更新调用,然后停止调试。没有发生任何情况,应用程序正在运行。我可以单击页面上的submit按钮,调试再次开始。我已经将这两种方法(控制器方法和服务更新方法)更改为async,但仍然没有引发异常。ModelState.IsValid为true Paulo Morgado。当我单步执行时,它进入更新调用,然后停止调试。没有发生任何情况,应用程序正在运行。我可以单击页面上的submit按钮,调试再次开始。我已经将这两种方法(控制器方法和服务更新方法)更改为async,但仍然没有引发异常。
public ServiceStatus Update(int sectionID, int compID, DateTIme dateCompleted)
{
throw new Exception();
}