如何自定义.net core 2.2中的问题详细信息以进行异常处理

我想在.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,};

            return StatusCode(problemDetails.Status.Value,problemDetails);
        }

由于每种返回响应类型都是不同的格式,因此使用我的Web API的人要求我提供带有自定义消息的常见响应类型。怎么做?任何想法?如何带来所有不同类型的响应/自定义错误,例如授权,无效请求,内部服务器错误等,

michelleyu7 回答:如何自定义.net core 2.2中的问题详细信息以进行异常处理

您可以实现您的自定义模型并将其返回。模型可以具有 StatusCode (状态代码)(1 **,2 **,3 **,4 **,5 **), ResponseMessage (“ 内部服务器错误”,“ 无法恢复”等)和 body (您的对象)。您可以响应的任何请求 OK(customModel)

本文链接:https://www.f2er.com/3113059.html

大家都在问