我知道Response.IsClientConnected
但在我的情景中它有很大的滞后。代码:
// sample code for sending a dynamic file in chuncks
long bytesSent = 0;
while (continueSending)
{
if (!AskReceiverToContinue())
break;
if (!Response.IsClientConnected)
break;
// Your suggestion goes here... :)
try
{
Response.OutputStream.Write(buffer, 0, buffer.Length);
bytesSent += buffer.Length;
}
Catch
{ // To my experience, this is more reliable than Response.IsClientConnected
continueSending = false;
}
}
问题是客户端实际接收的字节数量比我的bytesSent
小得多。似乎当客户端断开连接时,程序会发现情况有很大的延迟(并继续增加bytesSent
),这是因为ASP.NET告诉我情况(客户端断开连接)很晚。
是否有任何可靠的方法可以找出客户端何时断开连接(实时)?
答案 0 :(得分:1)
您正在通过HTTP进行转移,不是吗?如果是,则由于HTTP协议的无状态而无法实现。只有你必须帮助的是你已经使用的超时。