Как заставить IIS отправлять заголовки ответа без отправки тела ответа и закрытия соединения - PullRequest
0 голосов
/ 07 декабря 2010

Я пытаюсь передать динамически сгенерированные данные клиенту через HTTP с использованием IIS, и соединение должно оставаться открытым в течение длительного периода времени, и сервер будет периодически отправлять обновления статуса клиенту, пока он выполняет время.трудоемкая операция.

Все это ДОЛЖНО обрабатываться в ОДНОМ запросе, но я использую поток WebClient.OpenRead(), который нельзя открыть, пока не отправлены заголовки.

Как заставить IIS отправлять заголовки клиенту, а затем отправлять тело ответа?

1 Ответ

1 голос
/ 07 декабря 2010

Такое поведение обычно достижимо, если установить для KeepAlive значение true и установить для заголовка Expect значение «100 и продолжить».После этого сервер отправит заголовки с кодом результата 100.

Я не уверен, возможно ли это с помощью WebClient.


Вместо этого используйте HttpWebRequest, чтобы иметь возможность устанавливать значениявыше.На самом деле WebClient не делает ничего волшебного, кроме использования GET для получения данных.Вот код для вызова OpenRead в Reflector:

try
    {
        request = this.m_WebRequest = this.GetWebRequest(this.GetUri(address));
        Stream responseStream = (this.m_WebResponse = this.GetWebResponse(request)).GetResponseStream();
        if (Logging.On)
        {
            Logging.Exit(Logging.Web, this, "OpenRead", responseStream);
        }
        stream2 = responseStream;
    }
    catch (Exception exception)
    {
     //
...