2013-04-09 13 views
5

Jak mogę przekierować użytkownika do niestandardowej strony błędu, gdy wystąpił wyjątek HttpRequestValidationException. Próbowałem złapać go w moim basecontroller:Jak wychwycić wyjątek HttpRequestValidationException

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

ale wciąż uzyskać wyjątek: Potencjalnie niebezpieczne wartość Request.Form wykryto od klienta

Odpowiedz

5

Wyjątek ten występuje znacznie wcześniej w realizacji żądanie i nie można go obsłużyć metodą OnException w kontrolerze bazowym. Można napisać globalny program obsługi wyjątków, jak pokazano w this post.

+0

Po dodaniu kodu Server.ClearError(); w chronionym trybie nadpisuje działanie OnException (ExceptionContext exceptionContext) w kontrolerze basecontroller, to działa. Ale jaka jest najlepsza praktyka? złapać ten wyjątek w globalnym asaxie lub w moim kontrolerze base? – Djave

+0

Globalny program obsługi wyjątków umożliwia obsługę znacznie szerszego zakresu wyjątków, które występują nawet poza kontrolerami. Tak właśnie bym wybrał. –

+0

wielkie dzięki Darin – Djave

Powiązane problemy