2013-04-09 8 views
5

Come posso reindirizzare l'utente a una pagina di errore personalizzata, quando si è verificata HttpRequestValidationException. Ho cercato di prenderlo nella mia BaseController:Come rilevare HttpRequestValidationException

protected override void OnException(ExceptionContext exceptionContext) 
    { 
     if (exceptionContext.Exception is HttpRequestValidationException) 
     { 
      this.View("CustomError").ExecuteResult(this.ControllerContext); 
     } 
    } 

Ma ho ancora ottenere l'eccezione: Un valore potenzialmente pericoloso Request.Form è stato rilevato dal client

risposta

5

Questa eccezione si verifica molto prima nell'esecuzione di la richiesta e non può essere gestita dal metodo OnException in un controller di base. È possibile scrivere un gestore di eccezioni globale come mostrato in this post.

+0

Se aggiungo il codice Server.ClearError(); in override protetto, l'azione OnException (ExceptionContext exceptionContext) void nel basecontroller, quindi funziona. Ma qual è la migliore pratica? per cogliere questa eccezione in asax globale o nel mio basecontroller? – Djave

+0

Un gestore di eccezioni globale consente di gestire una gamma molto più ampia di eccezioni che si verificano anche al di fuori dei controller. Quindi è quello che opterei per. –

+0

grazie mille Darin – Djave