Могу ли я вернуть HTTP-код 504 в сетевое ядро ​​ASP - PullRequest
0 голосов
/ 27 февраля 2019

В настоящее время у меня есть 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 и сообщение об ошибке?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Используйте 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);
0 голосов
/ 27 февраля 2019

Попробуйте это:

context.HttpContext.Response.StatusCode = 504;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...