Это то, что я делаю, и я все еще получаю ошибку из-за проблемы с электронной почтой.
Я никогда ничего не храню в БД, потому что, если в БД есть ошибка, у меня никогда не будет этой ошибки в БД, по логике, вставка завершится неудачей!
Поэтому я отправляю письмо на специальный адрес электронной почты, например, bugs@mydomain.com
Тема : [Имя приложения] [Отметка времени: ddmmyyyy hhmmss]
Сообщение : приложение, сообщение об ошибке, информация о трассировке стека, а также переменные сеанса, например имя пользователя, и переменные сервера, например, Referrer.
лучший друг разработчика ASP.NET - это информация трассировки стека , именно здесь вы узнаете, что пошло не так, каков был вызов и куда он звонил .
единственная проблема , которая у вас есть в этой системе, заключается в том, что вы ничего не получите, если у электронной почты есть проблема (за исключением некоторых случаев при отправке электронной почты), и для этого я начал добавлять к ежемесячному XML-файл [errorLog_ mmm_yyyy.xml] также создал простую страницу с перетаскиванием и сеткой, в которой загружался XML для месяца и года, в которые я хотел проверить ошибки.
try
{
// production code
}
catch(Exception ex)
{
Utilities.Mail.SendError(ex);
}
или лучший способ: добавьте его в Application_Error в global.asax:
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Diagnostics" %>
<script language="C#" runat="server">
void Application_Error(object sender, EventArgs e)
{
//get reference to the source of the exception chain
Exception ex = Server.GetLastError().GetBaseException();
//log the details of the exception and page state to the
//Windows Event Log
EventLog.WriteEntry("myWebApplication name",
"MESSAGE: " + ex.Message +
"\nSOURCE: " + ex.Source +
"\nFORM: " + Request.Form.ToString() +
"\nQUERYSTRING: " + Request.QueryString.ToString() +
"\nTARGETSITE: " + ex.TargetSite +
"\nSTACKTRACE: " + ex.StackTrace,
EventLogEntryType.Error);
Utilities.Mail.SendError(ex);
}
</script>
с кодом выше вы добавляете ошибку в журнал событий, я добавляю ошибку в файл XML в функции SendError (Exception).