如何强制IIS发送响应标头而不发送响应正文和关闭连接

时间:2010-12-07 00:32:09

标签: c# iis-7 streaming

我正在尝试使用IIS将动态生成的数据通过HTTP流式传输到客户端,并且连接必须长时间保持打开状态,并且服务器会在执行时间时向客户端发送定期状态更新 - 消耗操作。

这必须在一个请求中处理,但我使用的是WebClient.OpenRead()流,在发送标头之前无法打开。

如何强制IIS将标头发送到客户端,然后发送响应正文?

1 个答案:

答案 0 :(得分:1)

通常可以通过将KeepAlive设置为true并将Expect标头设置为“100并继续”来实现此行为。通过这样做,服务器将发送带有结果代码100的标题。

我不确定使用WebClient是否可行。


使用HttpWebRequest代替能够设置上面的值。事实上,WebClient没有什么神奇之处,但使用GET来获取数据。以下是在Reflector中调用OpenRead的代码:

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)
    {
     //