目前,我有一个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);