Ich implementiere eine HttpRequestValidationException in meinem Application_Error Handler, und wenn möglich, möchte ich eine benutzerdefinierte Nachricht anzeigen.Response.StatusCode und Internet Explorer - Angepasste Nachricht anzeigen?
Jetzt denke ich über den StatusCode nach. In meinem aktuellen Beispiel sendet es eine 200, was meiner Meinung nach nicht getan werden sollte. Ich möchte stattdessen die (IMHO) besser passende 400 Bad Anfrage senden. Gleichzeitig möchte ich Response.Write verwenden, um eine benutzerdefinierte Nachricht einzugeben. Firefox zeigt es richtig an, aber IE7 gibt mir die Default nicht hilfreiche Internet Explorer Error Page.
Auf der einen Seite, denke ich, dass Internet Explorer nur davon ausgeht, dass alles <> 200 hat einfach keinen "guten" Inhalt und die RFC is not really clear hier.
Also frage ich mich, sendet eine HTTP 200 für eine Fehlerseite durch eine HttpRequestValidationException gute Praxis oder nicht? Gibt es gute Alternativen?
Vielen Dank! Meine Lösung: Ich habe eine> 512 Byte Error.aspx erstellt, aber von Global.asax wird der StatusCode auf 400 setzen und dann einen Server.Transfer statt Response.Redirect tun. Funktioniert gut mit AJAX und Internet Explorer. –
Nur hinzufügen: Normalerweise wäre ein Response.Redirect auch eine praktikable Lösung. Wenn Sie jedoch ASP.net AJAX verwenden, werden Sie ebenfalls umgeleitet. Server.Transfer erlaubt es Ihnen, auf der aktuellen Seite für AJAX-Requests zu bleiben und den Fehler in JavaScript zu behandeln. Siehe meine HttpRequestValidationException Frage. –