Надоело пытаться найти «правильный» способ сделать это, поэтому я в итоге создал свой собственный тип исключения:
public class HandledElmahException : Exception
{
public HandledElmahException() : base() { }
public HandledElmahException(string message) : base(message) { }
public HandledElmahException(string message, Exception innerException) : base(message, innerException) { }
}
Затем в обработчике событий ErrorLog.Logged я просто проверяю, имеет ли исключение тип HandledElmahException
.
void ErrorLog_Logged(object sender, ErrorLoggedEventArgs args)
{
if (args.Entry.Error.Exception is HandledElmahException)
return;
// my code to transfer to custom error page to collect feedback...
}
Итак, если я не хочу переносить их в ErrorPage, когда регистрируется исключение, я использую экземпляр моего специального HandledElmahException
класса, который может быть получен из.
ErrorSignal.FromCurrentContext().Raise(new HandledElmahException("Program code not found: " + Student.MostRecentApplication.ProgramCode));