asp.net核心不具有InternalServerError()吗?

Nan*_*dun 7 asp.net-mvc asp.net-core-mvc .net-core

对于HTTP 500代码,Microsoft.AspNetCore.Mvc.Controller基类没有等效的BadRequest(),Ok(),NoContent()等。

我们为什么不能做一个

try{
    oops();
}
catch(Excpetion e){
     //some handling
     return InternalServerError(e);
}
Run Code Online (Sandbox Code Playgroud)

我知道可以返回StatusCode(500);

但是我们正在尝试与我们的HTTP代码更加一致,并且想知道对于500个代码,是否存在与Ok()更一致的东西。

Lui*_*eia 12

如果就像我一样,您不明白Karim 的答案中的StatusCode方法来自哪里,那么此代码也可以工作:

var errorObjectResult = new ObjectResult(exceptionMessage);
errorObjectResult.StatusCode = StatusCodes.Status500InternalServerError;
                
return errorObjectResult;
Run Code Online (Sandbox Code Playgroud)


Foy*_*rim 8

ASP.NET Core 2.x没有内部服务器错误方法。相反,您可以包括以下库。

using Microsoft.AspNetCore.Http;
Run Code Online (Sandbox Code Playgroud)

然后使用下面的代码。

return new StatusCodeResult(StatusCodes.Status500InternalServerError);
Run Code Online (Sandbox Code Playgroud)

或者,如果您想在响应中添加异常,请尝试以下代码

var result = StatusCode(StatusCodes.Status500InternalServerError, exception);
return result;    
Run Code Online (Sandbox Code Playgroud)

  • 我不知道原始答案时是否是这种情况,但 ControllerBase 类现在有一个返回 StatusCodeResult 的 StatusCode 方法。所以代码现在可以是:`return StatusCode(StatusCodes.Status500InternalServerError);` (2认同)