2013-12-11 2 views
0

Есть ли способ использования ASP.NET Web API для возврата заголовков ответов раньше?Ранние заголовки Web API ранее

Пример: Скажем, у меня есть действие в мой контроллер, который возвращает все компании для фильтра

// GET api/companies/filter 
    public Companies Get(string someFilter) 
    { 
     // some long operation (10 seconds) 
    } 

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

Возможно ли это как можно?

+0

Так что вы хотите вернуть 2 отдельные ответы HTTP? –

+0

Не могли бы вы дать более подробную информацию о том, каков ваш точный сценарий и почему вы хотите отправить заголовки ответов как можно скорее? Предположим, если заголовки отправлены обратно как 200 OK и посреди завершения написания ответа, если произошла ошибка. Планируете ли вы обработать его у клиента? –

+0

Таким образом, клиент знает, что ему удалось получить доступ к серверу, что сервер в настоящее время работает, и что он вскоре получит ответ от него. И затем я могу использовать на стороне клиента: ждать httpClient.GetAsync (адрес, HttpCompletionOption.ResponseHeadersRead, myTokenWithATimeoutForHeaders) – Fabien

ответ

1

Вы должны использовать PushStreamContent сделать это

// GET api/companies/filter 
public HttpResponseMessage Get(string someFilter) 
{ 
    // some long operation (10 seconds) 

    var pushContent = new PushStreamContent((stream, content, ctx) => 
     { 
      // Do long running thing here, writing to stream 
     }); 


    return new HttpResponseMessage() { 
     Content = pushContent 
    } 
} 
+0

Большое спасибо Darell. Я смогу выполнить то, что хочу использовать. – Fabien

Смежные вопросы