2013-11-21 4 views
7

Come posso modificare il percorso di errore sul mio controller/azione con httpErrors?MVC 5 HttpErrors + Controller/Azione

ho questo codice:

<httpErrors errorMode="Custom"> 
    <remove statusCode="404"/> 
    <error responseMode="ExecuteURL" statusCode="404" path="Error/HttpRequestError"/> 
</httpErrors> 

Ma non funziona. Mostra pagina vuota e azione non inserita.

Cosa faccio di sbagliato?

P.S. Conosco un altro modo per sovle errori di pagina personalizzati. Ma voglio provare a usarlo.

Grazie!

risposta

12

risolvo un problema. Questo codice di web.config funziona:

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="404"/> 
    <error statusCode="404" responseMode="ExecuteURL" path="/Error/404"/> 
</httpErrors> 

ormai entrato in azione ErrorsController/NotFound (contrassegnati con il routing atribute ActionName-404).

+0

Nota che "ExecuteURL" fa distinzione tra maiuscole e minuscole! – Jester

+0

Questo approccio non funziona per me. Ottengo ASP.net "La risorsa non può essere trovata." pagina di errore. Sono in grado di accedere direttamente alla pagina/Error/404. Ho provato in IIS Express e IIS. Qualche consiglio? – Sean

+0

@Sean Questo è corretto ma un avviso importante è che non funzionerà se si dispone di un percorso di directory virtuale o è necessario anche riempirlo. Non lo sapevo, quindi ci sono volute molte ore per scoprire perché non riuscivo a farlo funzionare troppo. – XzaR

1

Perché non è sufficiente reindirizzare l'URL per 404

<customErrors mode="RemoteOnly" defaultRedirect="~/error"> 
    <error statusCode="404" redirect="~/Error/HttpRequestError" />  
</customErrors 
+2

Il reindirizzamento aggiuntivo è negativo per l'amministratore delegato. –

+0

@SergeyShoshin qual è il CEO? ti stai riferendo SEO? –

+0

Oh, mi dispiace. Esattamente SEO. –

1

Se la risposta di Sergey Shoshin non funziona.

<httpErrors errorMode="Custom" existingResponse="Replace"> 
     <remove statusCode="404"/> 
     <error statusCode="404" responseMode="ExecuteURL" path="[optional virtual directories...]/Error/404"/> 
</httpErrors>