Может ли «EndResponse» повысить производительность страницы ASP.Net
у меня естьResponse.Redirect
на моей странице сотрудника. Он перенаправляет на страницу зарплаты.
Response.Redirect ("Salary.aspx");
Это работало нормально, пока я не добавил обработку исключений, как показано ниже.
try
{
Response.Redirect ("Salary.aspx");
}
catch(Exception ex)
{
//MyLog();
throw new Exception();
}
//Remaining code in event handler
Это вызвало новое исключение, сказав "Тема была прервана », Я узнал, что этого можно избежать, установивendResponse
как ложь для перенаправления.
Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();
Объяснение нового исключения: оно всегда выдает исключение, но обрабатывается платформой. Так как я добавил try..catch, он был пойман там (и я выбрасываю новое исключение)
Замечания:CompleteRequest
обходит дополнительные фильтры и модули HTTP, но необойти дальнейшие события в текущем жизненном цикле страницы
Примечание. Response.Redirect генерирует это исключение для завершения обработки текущей страницы. ASP .Net сам обрабатывает это исключение и вызываетResetAbort
продолжить обработку.
ВОПРОС
Будь то "установка endResponse как ложного » Можноувеличение производительность так как исключение не выбрасывается?Будь то "установка endResponse как ложного » Можноснижение производительность, так как события жизненного цикла страницы не прекращаются?западня
Если вы установите endResponse какfalse
, оставшийся код в обработчике событий будет выполнен. Итак, нам нужно сделатьif
проверьте оставшийся код (Проверьте: не были ли выполнены критерии перенаправления).Ссылка
Почему Response.Redirect вызывает System.Threading.ThreadAbortException?ASP.NET исключение "Тема была прервана вызывает метод для выхода