Sto registrando tutti gli errori che si verificano nel mio metodo OnException.Come trovare in quale controller/azione si è verificato un errore?
Come trovare in quale controller/azione si è verificato un errore?
Sto registrando tutti gli errori che si verificano nel mio metodo OnException.Come trovare in quale controller/azione si è verificato un errore?
Come trovare in quale controller/azione si è verificato un errore?
Controllare lo stack di chiamate dell'eccezione.
Ad esempio:
var actionMethod = new StackTrace(exception)
.GetFrames().FirstOrDefault(f =>
typeof(IController).IsAssignableFrom(f.GetMethod().DeclaringType)
).GetMethod();
Non farlo; ExceptionContext fornisce un modo molto più semplice, pulito ed efficiente per accedere al nome e all'azione del controller come da risposta di OdeToCode qui sotto. –
@ChristopherKing: purché sia disponibile tale contesto. – SLaks
Quale credo che faccia, secondo la dichiarazione che sta gestendo gli errori nel metodo OnException. –
aggiungere il seguente metodo nella vostra global.asax e mettere un punto di interruzione su di esso
public void Application_Error(object sender, EventArgs e)
{
}
Non importa dove nell'applicazione si verifica un errore, il punto di rottura su questo metodo sarà colpito. Da qui si può vedere il valore per la seguente espressione nella finestra di controllo rapido e si sa che cosa esattamente è stata la causa dell'eccezione che si è verificato
((System.Web.HttpApplication)(sender)).Context.AllErrors
Questo metodo aiuterà, non importa dove si verifica l'eccezione nella vostra applicazione web.
La domanda indica che viene utilizzato il gestore OnException del controller in modo che questo non risponda alla domanda. –
Come Charlino implicita, i valori sono disponibili dal parametro ExceptionContext:
protected override void OnException(ExceptionContext filterContext)
{
var controllerName = filterContext.RouteData.Values["controller"];
var actionName = filterContext.RouteData.Values["action"];
// ...
base.OnException(filterContext);
}
Conviene l'ExceptionContext non contiene i dati che si desidera? – Charlino