ERR_CONNECTION_RESET: соединение было сброшено при загрузке большого файла - PullRequest
8 голосов
/ 15 ноября 2011

У меня была загадочная ошибка, когда файл размером более 4 МБ выдавал случайную ошибку.Позже я понял, что это было вызвано из-за http maxrequestlength.Размер изображения не может превышать 4 МБ при загрузке по умолчанию.

Я знаю, что это может измениться из файла web.config.

Когда я попытался устранить эту ошибку, отобразив другую страницу, появилась другая ошибка.При отладке программа немедленно вводит application_error.

При выполнении Server.GetLastError() Создано исключение:

[System.Web.HttpUnhandledException] {"Исключение типа" System.Web.HttpUnhandledException'было брошено. "} System.Web.HttpUnhandledException

трассировка стека: в System.Web.UI.Page.HandleError (исключение e) в System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, Boolean)includeStagesAfterAsyncPoint) в System.Web.UI.Page.ProcessRequest (логическое значение includeStagesBeforeAsyncPoint, логическое includeStagesAfterAsyncPoint) в System.Web.UI.Page.ProcessRequest () в System.Web.UI.Page.ProcessRequestWithNoAsxt) Att.UI.Page.ProcessRequest (контекст HttpContext) в ASP.businessprofile_aspx.ProcessRequest (контекст HttpContext) в каталоге c: \ Users \ Mattew \ AppData \ Local \ Temp \ Temporary ASP.NET Files \ root \ 4ea30077 \ 8f66786f \ App_Web_h5fham: строка 0 в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () в System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, Boolean & completeSynchronously)

Если я попробую любой код внутри метода application_error, например, перенаправление, все еще страница ошибки: Ошибка101 (net :: ERR_CONNECTION_RESET): соединение было сброшено.отображается.

Вопросы

  1. Как следует обрабатывать эту ошибку?Это может быть обработано перед рукой?Так эта ошибка не отображается?(Я пытался использовать jquery, чтобы получить размер файла раньше и проверить его, но я нахожу его слишком сложным

  2. Если Вопрос 1 не «отвечает», есть ли способ перехватить это?ошибка и отображать дружественную ошибку?

1 Ответ

11 голосов
/ 15 ноября 2011

Попробуйте.

Под web системы в web.config

добавьте эту строку ..

  <system.web>
<httpRuntime executionTimeout="999" maxRequestLength="2097151"/>

Затем вам нужно проверить размер файла

if (AsyncFileUpload1.HasFile)
        {
            string FileName = Path.GetFileName(AsyncFileUpload1.PostedFile.FileName);
            string Extension = Path.GetExtension(AsyncFileUpload1.PostedFile.FileName);
            string FolderPath = ConfigurationManager.AppSettings["FolderPath"];
            string FilePath = Server.MapPath("~/xl/" + FileName);
            double filesize = (double)AsyncFileUpload1.FileBytes.Length;
            if (filesize < 106496)
            {
               //do something
            }
            else
            {
                Response.Write("File size must be less than 2MB.");
            }

Если вы сочтете это полезным, отметьте это как свой ответ, иначе дайте мне знать ..

...