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) ?

Était-ce utile?

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à.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top