Ярлык не обновлен в System.Threading.ThreadAbortException

На моей странице я пытаюсь скачать файл. Файл успешно загружен, но я получаю исключение System.Threading.ThreadAbortException. Таким образом, я обработал это в моей попытке Catch Block и установил для lable ошибки пустое значение, но оно не обновляется на странице.

        catch (System.Threading.ThreadAbortException)
        {
            lblErrorMsg.Text = "dfdf";
        }
        catch (Exception ex)
        {
            lblErrorMsg.Text = "Error while processing you request :<br> Erorr Description : " + ex.Message;
        }

Это моя функция записи файла

  public static void WriteFile(string nameOfFile, string fileContent, HttpResponse writer)
    {
        writer.ClearHeaders();
        writer.ClearContent();

        writer.ContentType = "text/xml";
        writer.AppendHeader("Content-Disposition", "attachment; filename=" + nameOfFile);
        writer.Write(fileContent);
        writer.Flush();
        writer.End();
    }

Может кто-нибудь сказать, почему метка не установлена ​​пустой, хотя она попадает под Catch Block system.thread.threadabortexceptiopn, когда я отлаживаю код?

1 ответ

ThreadAbortException происходит потому, что вы преждевременно закрываете Response, вызывая метод End() объекта Response. Это также объясняет, почему уже слишком поздно писать на содержание страницы. Это не очень раздражающая ошибка, но было бы лучше справиться с ней аккуратно.

Просто проверьте эти ответы. Почему Response.Redirect вызывает исключение System.Threading.ThreadAbortException? или Как избежать Response.End() "Поток был прерван" Исключение во время загрузки файла Excel и другие ответы, связанные с Response и ThreadAbortException, чтобы понять его и правильно обработать, написав лучший код для загрузки файла, в соответствии с вашим использованием.

Также обратите внимание, что не имеет большого смысла иметь полностью переписанный поток ответов для страницы и некоторый контент на ней, например, метку.

Другие вопросы по тегам