Для проекта, над которым я работаю, одна из вещей, которые мы внедряем, - это то, что у нас есть код для некоторых из моих старых проектов ASP.NET и MVC - это утилита исключения Application_Error
, которая отправляет электронное письмо команда разработчиков с опытом исключения и наиболее актуальными деталями.
Вот как это выглядит:
Global.asax:
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
string path = "N/A";
if (sender is HttpApplication)
path = ((HttpApplication) sender).Request.Url.PathAndQuery;
string args = string.Format("<b>Path:</b> {0}", path);
// Custom code that generates an HTML-formatted exception dump
string message = Email.GenerateExceptionMessage(ex, args);
// Custom code that sends an email to the dev team.
Email.SendUnexpectedErrorMessage("Some App", message);
}
Одна "незначительная" проблема, хотя - когда я намеренно имею часть кода, выставляю исключение, чтобы проверить этот механизм...
public static void GetMuffinsByTopping(string topping)
{
throw new Exception("Test Exception!", new Exception("Test Inner Exception!!!"));
// Actual repository code is unreachable while this test code is there
}
Внешний интерфейс JavaScript немедленно перехватывает запрос HTTP 500, но указанный выше код global.asax.cs не достигается (я установил точку останова на первой исполняющей строке метода.)
Вопрос:. Каким образом я могу обработать "старый" Application_Error
для отправки писем с ошибками, чтобы разработчики нашей команды могли легче отлаживать наше приложение?