Я знаю о 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 сообщает мне ситуацию (клиент отключен) поздно.
Есть ли надежный способ узнать, когда клиент был отключен (в режиме реального времени)?