В linux для завершения стандартного ввода вам нужно ввести Ctrl-D
. Уровни ядра и tty делают знак или условие конца файла. Тогда getchar
дает EOF
(который не действителен char
, например, в системах, где char
являются неподписанными байтами между 0 и 255, EOF
может быть -1).
Обратите внимание, что feof (3) действителен только после операции чтения (например, getchar
, fgets
и т. д.), поэтому кодирование while(feof(stdin))
, как правило, неверно (в отличие от того, что я написал в предыдущей версии этого ответа). Вам лучше проверить, что getchar
возвращает EOF
, поэтому ваш myChar
должен быть int
(а не char
).
Попробуйте это:
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
Если вам не нужно возвращать тело ответа, вы можете вместо этого использовать StatusCodeResult
context.Result = new StatusCodeResult(504);