ASP.NET Core 3.0 WebAPI-当在Controller方法中处理异常时,为什么仍然收到InternalServerError?

BenceMányoki

当我在控制器中捕获异常时,客户端仍会收到InternalServerError,该如何解决?

我有自己的“结果”类,可以将其设置为失败,并填充一条用户友好的错误消息,我想捕获特定控制器方法中的异常,然后发回失败的“结果”类,而不是代码500 InternalServerError 。

谢谢您的帮助!

[HttpGet]
    [Route(Server_DevTestApiEndpoints.INTERNAL_SERVER_EXCEPTION_RESULT_TEST)]
    public Result GetInternalServerExceptionTest()
    {
        try
        {
            throw new Exception();
            return new Result();
        }
        catch (Exception e)
        {
            return new Result(e);
        }
    }
罗曼·帕维尔科

从体系结构的角度来看,最好使用ExceptionFilterAttribute来捕获控制器操作中的所有错误:

public class LogExceptionFilterAttribute : ExceptionFilterAttribute
{
    public override async Task OnExceptionAsync(ExceptionContext context)
    {
        //log your exception;
        context.Result = new ObjectResult("your custom message")
        {
            StatusCode = StatusCodes.Status200OK
        };
    }
}

并装饰您的动作或整个控制器:

[HttpGet]
[LogExceptionFilter]
[Route(Server_DevTestApiEndpoints.INTERNAL_SERVER_EXCEPTION_RESULT_TEST)]
public Result GetInternalServerExceptionTest()
{
    //your action logic
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档