【发布时间】:2020-03-08 19:37:20
【问题描述】:
我想在 .Net Core API 项目中处理不同类型的异常并返回自定义错误响应。 例如,授权错误、内部服务器错误、验证错误等,我想抛出常见的自定义错误。
为此,我正在考虑自定义 ProblemDetails。
内部服务器错误响应如下,
var problemDetails = new ProblemDetails
{
Status = (int)HttpStatusCode.InternalServerError,
Instance = feature?.Path,
Title = isDev ? $"{ex?.GetType().Name}: {ex?.Message}" : "An error occurred.",
Detail = isDev ? ex?.StackTrace : null,
};
对于授权,错误响应如下所示,
return AuthenticateResult.Fail("Missing Authorization Header.");
对于数据库中不可用的数据,响应如下,
return NotFound();
我使用自定义中间件来处理内部服务器错误,
[Route("/error")]
[HttpGet]
[ApiExplorerSettings(IgnoreApi = true)]
public ActionResult Error([FromServices] IHostingEnvironment webHostEnvironment)
{
var feature = HttpContext.Features.Get<IExceptionHandlerPathFeature>();
var ex = feature?.Error;
var isDev = webHostEnvironment.IsDevelopment();
var problemDetails = new ProblemDetails
{
Status = (int)HttpStatusCode.InternalServerError,
Instance = feature?.Path,
Title = isDev ? $"{ex?.GetType().Name}: {ex?.Message}" : "An error occurred.",
Detail = isDev ? ex?.StackTrace : null,
};
return StatusCode(problemDetails.Status.Value, problemDetails);
}
由于每种返回响应类型的格式不同,使用我的 Web API 的人要求我提供带有自定义消息的通用响应类型。怎么做?任何想法?如何带来所有不同类型的响应/自定义错误,如授权、无效请求、内部服务器错误等,
【问题讨论】:
标签: c# asp.net-core .net-core .net-core-2.2