Удаленный хост закрыл соединение Ошибка, как исправить? - PullRequest
17 голосов
/ 27 ноября 2011

Я использую elmah -> Elmah.axd в моем проекте для поиска ошибок.
есть ошибка, подобная этой:

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)

при работе с веб-сайтом,мы не видим этой ошибки.
но elmah отправляет мне эту ошибку много раз.
что означает эта ошибка и как я могу ее исправить?

РЕДАКТИРОВАТЬ 1
{мой веб-сайт предназначен для загрузки мобильных файлов, и иногда он действительно занят}
{я использую Windows Server 2008 r2-> удаленный доступ}

РЕДАКТИРОВАТЬ 2 после комментария
некоторые из журналов информации о окнах и предупреждениях (ошибок нет) на сегодняшний день, как показано ниже:

предупреждение

Процесс, обслуживающий пул приложений «ASP.NET 4.0 (Integrated)», превысил временные ограничения во время завершения работы.Идентификатор процесса был «6764».

предупреждение

Рабочий процесс '3232', обслуживающий пул приложений 'ASP.NET 4.0 (Integrated)', не смог остановить канал прослушивателя для протокола 'http' вотведенное время.Поле данных содержит номер ошибки.

предупреждение

Процесс, обслуживающий пул приложений «ASP.NET 4.0 (Integrated)», превысил ограничения по времени при завершении работы.Идентификатор процесса был «3928».

Ответы [ 5 ]

30 голосов
/ 27 ноября 2011

Я часто вижу это в журналах сайта, который я построил.

AFAIK, что исключение означает, что клиент разорвал соединение (перешел на другую страницу / закрыл браузер) до того, как страница закончила загрузку.Если клиент загружает файл, эта ошибка еще более вероятна, поскольку у него есть больше времени, чтобы решить выйти / двигаться дальше.

Ошибка не видна пользователям * - поэтому я только что удалил ее изElmah logs.

* На сайт допускаются только аутентифицированные пользователи.Я вижу от Эльмы, кто испытал ошибку и когда.Я спросил пользователей, и ни у одного человека не было когда-либо сообщений о возникновении этой ошибки в клиенте.

5 голосов
/ 02 января 2018

Я столкнулся с этой ошибкой, когда пользователь отменил загрузку файла. На стороне сервера создается исключение с сообщением Удаленный узел закрыл соединение. Код ошибки: 0x800703E3 . Однако исключение не имеет какого-либо отдельного типа, который может обрабатываться отдельно.

В odrer для правильной обработки в ASP.NET MVC я добавил регистратор исключений:

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

И реализация класса 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);
        }
    }
}

Я заметил, что этот конкретный тип ошибки имеет HResult = -2147023901, так что это то, по чему я фильтрую.

Надеюсь, это поможет.

3 голосов
/ 15 ноября 2013

Я столкнулся с этим сегодня, и для меня это произошло из-за истечения времени ожидания сокета в ожидании отправки удаленной стороной.

В этом примере исключительная (или намеренно) медленная работа клиента может вызвать исключение.

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

0 голосов
/ 11 августа 2018

Я столкнулся с этой проблемой в MINERGATE / socket_error_the_remote_host_closed_the_connection / вы должны выйти и перейти в C: \ Users \ yourName \ AppData \ Local \ minergate.ethash-minergate, а затем удалить все файлы в этой папке.хорошо Лу

0 голосов
/ 12 июля 2017

Немного опоздал на эту вечеринку, но в случае, если она помогает другим, Response.Close () вызывал исключение в моей ситуации.

Я видел исключение, описанное ОП, захваченное Эльмой.

Это происходило из-за закрытия ответа (код, который я поддерживал, записывал в выходной поток ответа):

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

Удаление Response.Close(); остановило генерируемое исключение.

...