web-dev-qa-db-fra.com

L'hôte distant a fermé la connexion Erreur, comment résoudre le problème?

j'utilise elmah -> Elmah.axd dans mon projet pour trouver des erreurs.
il y a une erreur comme ceci: 

System.Web.HttpException: The remote Host closed the connection. The error code is 0x800703E3.
Generated: Sun, 27 Nov 2011 13:06:13 GMT

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Web.HttpException (0x800703E3): The remote Host closed the connection. The error code is 0x800703E3.
   at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
   at System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()
   at System.Web.HttpResponse.Flush(Boolean finalFlush)
   at System.Web.HttpWriter.TransmitFile(String filename, Int64 offset, Int64 size, Boolean isImpersonating, Boolean supportsLongTransmitFile)
   at System.Web.HttpResponse.TransmitFile(String filename, Int64 offset, Int64 length)
   at SalarSoft.Utility.SP1.ResumeDownload.ProcessDownload(String fileName, String headerFileName)
   at NiceFileExplorer.en.Download.DownloadFile_SalarSoft(String fileName)
   at NiceFileExplorer.en.Download.GoForDownloadFile(String filepath)
   at NiceFileExplorer.en.Download.MainCodes()
   at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.HandleError(Exception e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

lors du travail avec le site Web, nous ne voyons pas cette erreur.
mais elmah m'envoie cette erreur plusieurs fois.
Que signifie cette erreur et comment puis-je la réparer? 

EDIT 1
{mon site Web est destiné aux fichiers mobiles téléchargés et il est parfois très occupé}
{J'utilise Windows Server 2008 R2 -> accès distant} 

EDIT 2 après le commentaire
Quelques informations sur Windows et les avertissements (il n’ya pas d’erreur) sont comme ci-dessous: 

attention 

Un processus desservant le pool d'applications 'ASP.NET 4.0 (intégré)' a dépassé limites de temps lors de l'arrêt. L'identifiant du processus était '6764'. 

attention 

Un processus de travail '3232' servant un pool d'applications 'ASP.NET 4.0 (Integrated) 'n'a pas réussi à arrêter un canal d'écoute pour le protocole' http 'dans le temps imparti. Le champ de données contient le numéro d'erreur.

attention 

Un processus desservant le pool d'applications 'ASP.NET 4.0 (intégré)' a dépassé limites de temps lors de l'arrêt. L'identifiant du processus était '3928'.

16
SilverLight

Je le vois souvent dans les journaux d’un site Web que j’ai construit.

Autant que je sache, cela signifie que le client a rompu la connexion (est allé sur une autre page/a fermé le navigateur) avant le chargement de la page. Si le client télécharge un fichier, cette erreur est d'autant plus probable qu'il a plus de temps pour décider de quitter/de passer à autre chose.

L'erreur n'est pas visible par les utilisateurs * - je viens donc de la supprimer des journaux Elmah.

* Le site n'autorise que les utilisateurs authentifiés. Je peux voir de Elmah qui a vécu l'erreur et quand. J'ai demandé aux utilisateurs et aucune personne n'a jamais signalé avoir rencontré ce bogue dans le client.

29
Neil Thompson

Je me suis heurté à cela aujourd'hui, et pour moi, cela se passait parce que le socket avait expiré en attendant que le côté distant envoie.

Dans cet exemple, un client extrêmement lent (ou délibérément lent) peut provoquer l'exception.

J'ai choisi de le résoudre en augmentant le délai de réception sur mes sockets, car je voulais prendre en charge quelques clients plus lents, soumis à des taxes SSL élevées.

3
davenpcj

Je suis tombé sur cette erreur lorsque l'utilisateur a annulé le téléchargement de fichier. Sur le serveur, il produit une exception avec le message L'hôte distant a fermé la connexion. Le code d'erreur est 0x800703E3 . Cependant, l'exception n'a aucun type distinct pouvant être traité séparément.

Pour pouvoir le gérer correctement dans ASP.NET MVC, j’ai ajouté un enregistreur d’exceptions:

public static class RegisterFilters
{
    public static void Execute(HttpConfiguration configuration)
    {
        configuration.Services.Add(typeof(IExceptionLogger), new WebExceptionLogger());
    }
}

Et implémentation de la classe WebExceptionLogger:

public class WebExceptionLogger : ExceptionLogger
{
    private const int RequestCancelledByUserExceptionCode = -2147023901;

    public override void Log(ExceptionLoggerContext context)
    {
        var dependencyScope = context.Request.GetDependencyScope();
        var loggerFactory = dependencyScope.GetService(typeof(ILoggerFactory)) as ILoggerFactory;
        if (loggerFactory == null)
        {
            throw new IoCResolutionException<ILoggerFactory>();
        }

        var logger = loggerFactory.GetTechnicalLogger<WebExceptionLogger>();
        if (context.Exception.HResult == RequestCancelledByUserExceptionCode)
        {
            logger.Info($"Request to url {context.Request.RequestUri} was cancelled by user.");
        }
        else
        {
            logger.Error("An unhandled exception has occured", context.Exception);
        }
    }
}

J'ai remarqué que ce type d'erreur spécifique avait HResult = -2147023901, c'est donc ce que je filtre.

J'espère que cela t'aides.

3
Mik

Peu de temps en retard pour cette partie, mais au cas où cela aiderait les autres, Response.Close () était à l'origine de l'exception dans ma situation.

Je voyais l'exception décrite par l'OP capturée par Elmah.

Cela était dû à la fermeture de la réponse (le code que je prenais en charge écrivait dans le flux de sortie de la réponse):

Response.Flush();
Response.Close();
Response.End();

Supprimer Response.Close(); a empêché la levée de l'exception.

0
strangerinthealps

j'ai rencontré ce problème dans MINERGATE /socket_error_the_remote_Host_closed_the_connection / vous devez vous déconnecter et accéder à C:\Utilisateurs\votrenom\AppData\Local\minergate.ethash-minergate et ensuite supprimer tous les fichiers dans ce dossier . bon lu

0
saberjoudaki