背景:我们的一个 GPRS 设备通过代理连接到通用处理程序时遇到问题。尽管处理程序在返回后立即关闭连接,但代理保持连接打开,这是设备不期望的。
我的问题:在处理程序返回其数据后,出于测试目的(为了模仿代理的行为),是否有可能在短时间内保持连接活动?
例如,这不起作用:
public class Ping : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.BufferOutput = false;
context.Response.ContentType = "text/plain";
context.Response.WriteLine("HELLO");
context.Response.Flush(); // <-- this doesn't send the data
System.Threading.Thread.Sleep(10000);
}
public bool IsReusable
{
get
{
return false;
}
}
}
[编辑]
好的,实际上,它按预期工作。问题是 Firefox 和 Fiddler 都会延迟显示原始数据,直到连接关闭。
如果Response.BufferOutput
设置为false
,并且我使用终端程序连接,我会立即获取数据,并且连接保持打开 10 秒。