MVC3 Custom Error 500 Problem bei der Eingabe von HTML-Tags in Textfeldern

  • Ich habe in meine MVC3-Webanwendung eine benutzerdefinierte Standardfehlerseite implementiert, die meistens zu funktionieren scheint. Ich kann eine ungültige URL eingeben und mein Browser wird ohne Probleme auf eine Standardfehlerseite umgeleitet. Ich habe jedoch ein Problem, wenn ich ein HTML-Tag in ein Textfeld wie <br> einfüge. Dies verursacht einen 500-Fehler (Internal Server Error), der nicht auf meine Standardfehlerseite umgeleitet wird.

    In meiner web.config habe ich das folgende Tag:

     <customErrors defaultRedirect="/CustomErrors/DefaultError" mode="On">
    </customErrors>
     

    Ich habe einen Controller namens CustomErrors mit einer Ansicht namens DefaultError.cshtml.

     public class CustomErrorsController : Controller
    {        
        public ActionResult DefaultError()
        {
            return View();
        }
    }
     

    Wenn ich falsch eingebe URL einen Haltepunkt, den ich in der ActionError-Aktionsmethode CustomErrorsController eingebe. Wenn ich jedoch <br> in ein Textfeld wie die Anmeldeseite eingebe, sehe ich ein flockiges Verhalten. IE oder Mozilla zeigt eine Standard-Fehlerseite des Browsers an. Die seltsame Sache ist, dass wenn ich die customerror -Eigenschaft aus meiner web.config entferne, ich eine hässliche Seite bekomme, bei der die Ausnahme ein Dump ist. Mein eigener Fehler wird also irgendwie referenziert, aber nicht vollständig implementiert.

    Ideen, wie Sie mit benutzerdefinierten Fehlern umgehen und HTML-Tags in Textfelder eingeben können?

    22 November 2011
    neontapirBohdan
1 answer
  • Danke Adriano, dass er mich in die richtige Richtung weist. Ich habe dieses Beispiel gefunden (http://stackoverflow.com/questions/6324368/asp-net-mvc-override-onexception-in-base-controller-keeps-propogating-to-applica) und die OnException in meiner Basis implementiert Controller, da die Ausnahme in meinem CustomErrorsController nicht auftreten würde.

         protected override void OnException(ExceptionContext filterContext)
        {
            filterContext.Result = new ViewResult
            {
                ViewName = "/CustomErrors/DefaultError"
            };
    
            filterContext.ExceptionHandled = true;
        }
     
    22 November 2011
    user1013651