我正在尝试使用IIS将动态生成的数据通过HTTP流式传输到客户端,并且连接必须长时间保持打开状态,并且服务器会在执行时间时向客户端发送定期状态更新 - 消耗操作。
这必须在一个请求中处理,但我使用的是WebClient.OpenRead()
流,在发送标头之前无法打开。
如何强制IIS将标头发送到客户端,然后发送响应正文?
答案 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)
{
//