2010-08-19 3 views
8

Je reçois beaucoup de ces messages d'erreur dans mes journaux sur un de mes serveurs et par intermittence sur deux autres. Google n'a pas révélé beaucoup d'informations, principalement liées à des téléchargements de fichiers ou de téléchargements interrompus.L'hôte distant a fermé la connexion. Le code d'erreur est 0x80070057

Mes pages sont essentiellement des fichiers texte avec "ok" dans ceux qui ont seulement l'extension .aspx pour les plans futurs, il n'y a pas de code réel alimentant les pages. Les serveurs sont tous Windows Server 2008 RC2 x64 exécutant IIS7/ASP.NET 4.

Statistiquement, cela se passe bien moins de 1% du temps, mais en raison du volume de trafic qui encombre encore mon journal des événements avec 2 ou 3 de ces messages par minute.

Édition: J'ai détecté le problème, la mise en mémoire tampon à true a cessé de se produire.

+0

Avez-vous trouvé répondre? – onder

+0

Salut mec, oui le problème était un paramètre de configuration dans mon web.config qui avait la mise en mémoire tampon à false. – Ben

+0

Voir http://stackoverflow.com/a/22992379/17373 pour un exemple de capture de cette exception et l'ignorer. –

Répondre

6

Je sais que cela a été répondu, mais au cas où cela aiderait quelqu'un d'autre, cela est arrivé dans mon projet MVC parfois quand j'avais un ensemble dbContext en haut d'un dépôt. Lorsque je suis passé à une instruction using pour les connexions à la base de données, l'erreur n'est jamais apparue à nouveau.

Alors, je suis passé de ce en haut de chaque dépôt:

DbContext db = new DbContext(); 

Pour cette opération pour chaque connexion individuelle:

using (DbContext db = new DbContext()) 
{ 
    //db connection stuff here.... 
} 

faut dire que personne n'a jamais rapporté avoir vu l'erreur et pas erreur a été jamais montré au navigateur, mais agréable de l'obtenir les journaux tout de même!

+0

J'aime cette réponse parce qu'en général, vous devriez utiliser la méthode using chaque fois que vous utilisez des ressources externes (fichiers, services web, essentiellement tout ce qui doit être fermé). C'est aussi cool car cela vous évite d'avoir à écrire un destructeur ou à éliminer la méthode car il gère aussi cela automatiquement. –

3

Renvoyez-vous un Stream?

Vous devrez peut-être le fermer une fois la méthode terminée.

Découvrez ceci: Closing Returned Streams in WCF

Voici le code ce blog suggère:

public Stream GetFile(string path) 
{ 
    Stream fileStream = null;  

    try 
    { 
     fileStream = File.OpenRead(path); 
    } 
    catch(Exception) 
    { 
     return null; 
    } 

    OperationContext clientContext = OperationContext.Current; 
    clientContext.OperationCompleted += 
     new EventHandler(delegate(object sender, EventArgs args) 
     { 
      if (fileStream != null) fileStream.Dispose(); 
     }); 
    return fileStream; 
} 
Questions connexes