Ho un progetto WebAPI ASP. Sto cercando di impostare un gestore di eccezioni globale sul mio controller di base. Così ho creato un ExceptionFilterAttribute
così.WebAPI Global Exception Handling
using System.Web.Http.Filters;
public class MyExceptionFilterAttribute : ExceptionFilterAttribute
{
protected static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
var exception = actionExecutedContext.Exception;
log.Fatal(exception);
base.OnException(actionExecutedContext);
}
}
Poi ho registrato anche in /App_Start/WebApiConfig.cs
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// ...
// Setup Filters
config.Filters.Add(new MyExceptionFilterAttribute());
}
}
Quando aggiungo gli attributi al mio controller (o base-Controller), nulla viene registrato. Che cosa sto facendo di sbagliato?
Edit: Il mio controller di gettare l'eccezione:
[HttpGet]
public string Hello(string name)
{
if (name.Equals("error", StringComparison.OrdinalIgnoreCase))
{
throw new HttpResponseException(HttpStatusCode.InternalServerError);
}
else
{
return name;
}
}
quale tipo di eccezione vi siete persi, ci sono il numero di casi che il filtro non riesce a gestire. –