2010-08-19 3 views
8

Я получаю много этих сообщений об ошибках в своих журналах на одном из моих серверов и периодически на двух других.Удаленный хост закрыл соединение. Код ошибки 0x80070057

Googling не раскрывает очень много информации, в основном связанной с загрузкой файлов или загрузкой.

Мои страницы - это в основном текстовые файлы с «ок», в которых есть только расширение .aspx для будущих планов, нет фактического кода, приводящего в действие страницы. Серверы все Windows Server 2008 RC2 x64, работающие с IIS7/ASP.NET 4.

Статистически это происходит задолго до 1% времени, но из-за объема трафика, который по-прежнему загромождает мой журнал событий с 2 ​​или 3 из этих сообщений в минуту.

Редактировать: Я отследил проблему, установив буферизацию в true, чтобы остановить ее.

+0

вы нашли ответ? – onder

+0

Привет, да, проблема была в настройках конфигурации в моем web.config, у которого была установлена ​​буферизация в false. – Ben

+0

См. Http://stackoverflow.com/a/22992379/17373 для примера того, как зафиксировать это исключение и проигнорировать его. –

ответ

6

Я знаю, что на это был дан ответ, но по случайности это помогает кому-то другому, это случилось в моем проекте MVC, когда у меня был один dbContext, расположенный в верхней части репозитория. Когда я переключился на оператор using для соединений с базой данных, ошибка больше не появлялась.

Итак, я пошел от этого в верхней части каждого хранилища:

DbContext db = new DbContext(); 

Для этого для каждого отдельного соединения:

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

Стоит сказать, что никто никогда не сообщают об ошибке, и нет ошибка была когда-либо показана браузере, но приятно получить ее от журналов все равно!

+0

Мне нравится этот ответ, потому что обычно вы должны использовать метод использования в любое время, когда используете внешние ресурсы (файлы, веб-службы, в основном все, что нужно закрыть). Это также здорово, потому что это экономит, вам нужно написать деструктор или метод удаления, так как он автоматически обрабатывает это тоже. –

3

Вы возвращаете Stream?

Возможно, вам придется закрыть его после завершения метода.

Проверьте это: Closing Returned Streams in WCF

Вот код этого блога говорит:

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; 
} 
Смежные вопросы