【发布时间】:2016-08-27 05:00:36
【问题描述】:
我的 mvc 控制器中有这个方法:
public ActionResult BlaBla()
{
if (!ModelState.IsValid)
return new HttpNotFoundResult();
// ...
}
我想创建它的异步版本。所以,我想像这样更改代码:
public async Task<ActionResult> BlaBla()
{
if (!ModelState.IsValid)
return new HttpNotFoundResult(); // Compiling error: this line is not working
// ...
}
我的问题是,当使用async Task<...> 样式时,如何从我的 mvc 控制器返回错误代码(404、500、...)?
【问题讨论】:
-
其他错误码可以使用
HttpStatusCodeResult(HttpStatusCode code)基类。HttpNotFoundResult和HttpNotAuthorizedResult的子类是两个最常见状态结果(分别为 404、401)的快捷方式。至于编译错误,这是因为您没有返回任务或等待任何其他方法调用,因此您的编译器没有自动生成 Task 返回类型。 -
@BerinLoritsch:在方法签名中没有
async的情况就是这样。但是,使用async编译器会补偿您,因此实际上没有必要返回Task实例。如果您实际上没有等待任何内容,您将收到编译器警告,但它仍会编译。 -
引发的实际异常是什么?
标签: c# asp.net asp.net-mvc asynchronous async-await