我可以 return ASP net core 中的 504 HTTP 代码吗

Can I return a 504 HTTP code in ASP net core

目前我有一个 ExceptionFilterAttribute 来处理 controllers 上的异常。我的 API 连接到服务(通过专有 TCP/IP)。如果此服务无法访问,我想 return 带有正确错误消息的 HTTP 504 响应代码。

我已经知道如何发送 400

public override void OnException(ExceptionContext context)
{
    if (!MyService.IsConnected)
    {
        context.Result = new BadRequestObjectResult(new ResultInformation() { ResultCode = 2000056, Message = "My service is not reachable" });

    }
    else
    {
        context.Result = new BadRequestObjectResult(new ResultInformation() { ResultCode = 0, Message = context.Exception.Message });
    }
}

如何更改此代码以发送 504 和错误消息?

试试这个:

context.HttpContext.Response.StatusCode = 504;

使用ObjectResult并手动设置状态码。

//... omitted for brevity

if (!MyService.IsConnected) {
    var info = new ResultInformation() { 
        ResultCode = 2000056, 
        Message = "My service is not reachable" 
    };
    context.Result = new ObjectResult(info) {
        StatusCode = 504
    };
}

//... omitted for brevity

大多数需要对象主体的标准状态结果类型实际上是从 ObjectResult 派生的,它们在其中设置了特定的状态代码。例如BadRequestObjectResult

如果您实际上不需要 return 响应正文,您可以使用 StatusCodeResult

context.Result = new StatusCodeResult(504);