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