Domanda

Sto implementando una HttpRequestValidationException nel mio gestore Application_Error e, se possibile, desidero visualizzare un messaggio personalizzato.

Ora, sto pensando allo StatusCode.Nel mio esempio attuale, invia un 200, cosa che penso non dovrebbe essere fatta.Vorrei invece inviare la (IMHO) più appropriata 400 Bad Request.Tuttavia, allo stesso tempo, vorrei utilizzare Response.Write per inserire un messaggio personalizzato.Firefox lo visualizza correttamente, ma IE7 mi restituisce la pagina di errore predefinita di Internet Explorer non utile.

Da un lato, immagino che Internet Explorer presuppone semplicemente che tutto <> 200 semplicemente non abbia alcun contenuto "buono", e il RFC non è molto chiaro Qui.

Quindi mi chiedo solo, l'invio di un HTTP 200 per una pagina di errore causata da una HttpRequestValidationException è una buona pratica o no?Ci sono buone alternative?

È stato utile?

Soluzione

Un codice di risposta HTTP 200 non indica un errore.Indica che era tutto ok.Non utilizzare un codice di risposta 200 per un errore.

Internet Explorer mostra la pagina "Errori semplici" se la risposta è inferiore a 512 byte.Ecco di più su questo problema: http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx,

Altri suggerimenti

No, non è certamente una buona pratica.I codici di stato 2XX significano (tra le altre cose) che il la richiesta è valida.Il che è esattamente il contrario della generazione di una HttpRequestValidationException.

Purtroppo non so come fare in modo che IE si comporti correttamente.Un modo leggermente migliore rispetto a inviare un 200 sarebbe reindirizzarlo a una pagina di errore, ma ancora lungi dall'essere perfetto.

Internet Explorer mostra quello che chiamano un "messaggio di errore HTTP amichevole" quando la risposta è 4xx o 5xx.Questa opzione può essere disattivata dall'utente nella finestra di dialogo Tools.Options.Advanced[Browsing] di IE.

Inviare un 200 per una pagina di errore è generalmente una cattiva pratica.Un'alternativa sarebbe avere una pagina "Errore" valida ipotetico per mostrare i messaggi di errore (quindi un 200 andrebbe bene) e quindi utilizzare un reindirizzamento 3xx a quella pagina.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top