首页 > 解决方案 > 我可以在 ASP 网络核心中返回 504 HTTP 代码吗

问题描述

目前我有一个ExceptionFilterAttribute处理异常controllers。我的 API 连接到服务(通过专有 TCP/IP)。如果无法访问此服务,我想返回带有正确错误消息的 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 和错误消息?

标签: c#asp.net-core-2.1

解决方案


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

如果您不需要实际返回响应正文,则可以改用StatusCodeResult

context.Result = new StatusCodeResult(504);

推荐阅读