Comment trouver un client asp.net déconnecté immédiatement
-
15-11-2019 - |
Question
Je suis conscient de Response.IsClientConnected
mais dans mon scénario, il y a un grand décalage.Code:
// 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;
}
}
Le problème est que le montant réel des octets reçus par le client est très inférieur à mon montant. bytesSent
.Il semble que lorsqu'un client est déconnecté, mon programme découvre la situation avec un grand retard (et continue d'augmenter bytesSent
) et c'est parce qu'ASP.NET m'informe tardivement de la situation (le client est déconnecté).
Existe-t-il une méthode fiable pour savoir quand un client a été déconnecté (en temps réel) ?
La solution
Vous effectuez un transfert via HTTP, n'est-ce pas ?Si oui, il n'y a aucun moyen en raison de l'apatridie du protocole HTTP.La seule chose dont vous disposez pour vous aider est le délai d'attente, que vous utilisez déjà.