Come posso ottenere 404 al lavoro con Elmah e la HandleErrorAttribute scritto per Elmah in asp.net mvc?

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

Domanda

ho implementato Elmah in uno dei miei progetti ASP.NET MVC. Inoltre ho fatto la seguente:

  • ho implementato l'ElmahHandleErrorAttribute scritto da Atif Aziz in questo Post
  • ho aggiunto l'attributo a tutti i miei controller
  • Ho installato Elmah per filtrare i 404 errori dal momento che non voglio per accedere coloro
  • ho aggiunto una vista Error.aspx nella cartella condivisa che desidero utilizzare per tutti i miei errori.
  • I miei customErrors nel web.config sono accesi e non ho alcun specifed pagine di errore in esso come io non avrei dovuto.

In uno dei miei controllori Ho il seguente codice:

if (model == null)
            throw new HttpException((int)HttpStatusCode.NotFound, "Project not found");

Ho semplicemente desidera visualizzare un 404 se un record non può essere trovato nel database. Per qualche ragione la mia pagina Error.aspx non visualizzerà un errore 404. Invece viene visualizzato l'asp.net generico "la risorsa non può essere trovato" pagina. Ho provato a rimuovere l'impostazione 404 filtro Elmah ma questo non cambia nulla.

La parte interessante è se cambio l'errore da NotFound dire InternalServerError nella pagina spettacoli Error.aspx più che bene.

Qualcuno ha qualche puntatori sul motivo per cui questo è?

È stato utile?

Soluzione

Non ho usato Elmah oltre la creazione di un'applicazione di esempio - ma forse perché una 404 non è errore di applicazione? Se la mia comprensione è corretta, un errore 404 viene spinto indietro a IIS che a sua volta viene visualizzato il messaggio di errore che state vedendo. Inoltre, credo che il web.coin

Se ho capito bene, si consiglia di modificare il vostro uso approccio e costruire questo invece o impostare il Response.StatusCode a 404 (check out la risposta di Jeff nella questione legata)

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