Возврат ответа непосредственно от HttpServer

Я могу через это на днях, и это меня озадачило, и я надеялся пролить свет на предмет того, почему такое поведение происходит.

Вот пример того, с чем я работаю:

public class MyHttpServer : HttpServer
{
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        if (someCondition)
        {
            return new Task<HttpResponseMessage>(() => new HttpResponseMessage(HttpStatusCode.BadRequest));
        }

        return base.SendAsync(request, cancellationToken);
    }
}

Я ожидал, что если какое-то предварительное условие будет выполнено, я получу обратно сообщение с неверным ответом, но вместо этого оно просто крутится вечно, пока я не остановлю сервер, а затем клиент получит сообщение типа «Нет данных, полученных от сервера». Что вызывает это, и возможно ли вернуть ответное сообщение из метода сервера SendAsync?


person Jedi_Maseter_Sam    schedule 25.04.2019    source источник
comment
Просто предположим, что вместо этого вы хотите вернуть Task.FromResult(new HttpResponseMessage(HttpStatusCode.BadRequest))   -  person johnny 5    schedule 25.04.2019
comment
@ johnny5 Вы правы, сэр, похоже, это исправлено. Это потому, что он ожидает запущенную/завершенную задачу, а не просто задачу?   -  person Jedi_Maseter_Sam    schedule 25.04.2019
comment
Я не уверен, что делает создание новой задачи таким образом, я просто знаю, что когда у меня уже есть результат, чтобы использовать From Result   -  person johnny 5    schedule 25.04.2019


Ответы (1)


Вы хотите вернуться из результата, так как у вас уже есть ответ

return Task.FromResult(new HttpResponseMessage(HttpStatusCode.BadRequest))
person johnny 5    schedule 25.04.2019