Elmah always kick in. How to filter programmatically: Here is my Global file:
/// <summary>
/// Handles the Filtering event of the ErrorLog control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="Elmah.ExceptionFilterEventArgs"/> instance containing the event data.</param>
public void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
Filter(e);
}
/// <summary>
/// Handles the Filtering event of the ErrorMail control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="Elmah.ExceptionFilterEventArgs"/> instance containing the event data.</param>
public void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs e)
{
Filter(e);
}
/// <summary>
/// Filters the specified e.
/// </summary>
/// <param name="e">The <see cref="Elmah.ExceptionFilterEventArgs"/> instance containing the event data.</param>
private void Filter(ExceptionFilterEventArgs e)
{
Exception exception = e.Exception.GetBaseException();
var httpException = exception as HttpException;
if (httpException != null && httpException.GetHttpCode() == 404)
{
e.Dismiss();
}
if (exception is FileNotFoundException ||
exception is HttpRequestValidationException ||
exception is ViewStateException ||
exception is CryptographicException ||
exception is NodeNullException ||
exception is SectionNullException ||
exception is IdentifierNullException ||
exception is AccessForbiddenException ||
exception is HttpException)
{
e.Dismiss();
}
}
/// <summary>
/// Handles the Error event of the Application control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
protected void Application_Error(Object sender, EventArgs e)
{
bool errorObtained = false;
Exception ex = null;
try
{
Exception rawException = Server.GetLastError();
if (rawException != null)
{
errorObtained = true;
if (rawException.InnerException != null)
{
ex = rawException.InnerException;
}
else
{
ex = rawException;
}
}
}
catch
{
}
if (errorObtained && ex != null)
{
if ((HttpContext.Current != null) && (HttpContext.Current.Request != null))
{
if (HttpContext.Current.IsCustomErrorEnabled)
{
Server.Transfer(errorPage, false);
}
}
}
}