Come impostare a livello di codice Response.StatusCode diverso da 200 OK in ASP.NET Applicazione e ancora servire contenuti cliente con successo?

StackOverflow https://stackoverflow.com/questions/1473855

Domanda

Impostazione Response.StatusCode = 404 non serve contenuto sotto né IE8 né Chrome? Funziona in Mozilla se trovo strano!

Fare la più semplice delle cose - progetto di applicazione web vuota asp.net con la pagina vuota Default.aspx. In Page_Load utilizzare il seguente:

protected void Page_Load( object sender, EventArgs e )
{
    Response.StatusCode = 404;
}

Questa imposta in modo efficace il codice di stato della richiesta corrente a 404, non c'è dubbio su questo. Durante il rendering in IE8 o Chrome, o possono essere alcuni altri browser, come pure - non ho ancora testato, la pagina attuale non si presenta affatto. Questi browser visualizzano le loro pagine di errore di default 404 (non di default errori personalizzati di IIS). Esempio in IE8:

The webpage cannot be found 
 HTTP 404  
   Most likely causes:
•There might be a typing error in the address.
•If you clicked on a link, it may be out of date. ... and so on ...

Quello che voglio veramente fare però è quello di servire 404 pagina di errore con codice di errore 404 che effettivamente dire al browser o crawler o chiunque che questa pagina non esiste - non solo per mostrare qualche messaggio di errore personalizzato fantasia con lo stato messaggio 200 OK.

Utilizzare Fiddler indica che sono in realtà davvero servendo la richiesta, ma il browser è completamente ignorarlo ?!

La mia domanda - come posso impostare 404 codice di stato ed ancora il rendering del contenuto pagina? Esempio - http://www.intel.com/invalidpage.wow . Utilizzando violinista dimostra che questa pagina è servita con codice di stato 404.

È stato utile?

Soluzione

Per impostazione predefinita IE mostrerà è pagina di errore personalizzata se la risposta per l'errore è inferiore ad un importo configurabile. Credo che l'importo è di 512 byte, ma cercherò di trovare qualche conferma su questo. Quindi tutto quello che dovete fare è mettere più contenuti nella vostra risposta.

EDIT: Questo post sul blog descrive i limiti. Uno dei commenti mostra le impostazioni della chiave del Registro di sistema per modificare questi valori. La chiave è:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ ErrorThresholds

Altri suggerimenti

Non servono i contenuti, si imposta una pagina di errore personalizzata a livello di server web (IIS) o nel web.config, nel caso di asp.net

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