目前,我有一个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和错误消息?

最佳答案

使用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);

10-05 21:25
查看更多