Этот вопрос в некотором роде связан с Изящно обрабатывать URI в ASP.NET , поскольку речь идет о том, как наилучшим образом обрабатывать исключения, возникающие в течение жизненного цикла запроса ASP.NET. Я нашел способ обработать большинство исключений изящно, но потом обнаружил, что некоторые исключения возникают так поздно в запросе, что нет способа сделать что-то вроде Server.Transfer
для сравнения всей логики представления ошибок на ее собственной странице.
Итак, вместо этого я должен обработать исключение внутри события Application_Error
и выполнить Response.Write
s и еще много чего. Это ужасно. Я понимаю, что в некоторых случаях поток ответов мог уже быть очищен, поэтому передача запроса на самом деле не вариант. Я хочу спросить, есть ли кто-нибудь, кто нашел элегантное решение этой проблемы?
Кроме того, мне трудно понять, когда я могу изящно обработать исключение, перенеся запрос на другую страницу, а нет. Как лучше всего выяснить, где в жизненном цикле запроса мы находимся, когда возникает исключение? Если это произойдет во время загрузки и рендеринга страницы, Page_Error
сможет с этим справиться, и у меня еще не было проблем с выполнением Server.Transfer
там. Но если исключение возникает либо слишком рано, либо слишком поздно для Page_Error
, чтобы его поймать, и оно всплывает до Application_Error
, что мне делать, чтобы узнать, рано или поздно?
Если уже поздно в жизненном цикле, мне, вероятно, придется сделать Response.Write
непосредственно с Application_Error
, но если это рано, я могу сделать Server.Transfer
. Проблема в том, что попытка сделать Server.Transfer
сама по себе вызовет исключение, если она находится в запросе на это.
Итак, существует ли глобальное перечисление или что-то подобное, что будет указывать, слишком поздно делать творческие вещи с ответом или нет?