Voglio che tutti gli errori 401 siano reindirizzati a una pagina di errore personalizzata. Ho inizialmente impostato la seguente voce nel mio web.config.Come si visualizzano le pagine di errore personalizzate in Asp.Net Mvc 3?
<customErrors defaultRedirect="ErrorPage.aspx" mode="On">
<error statusCode="401" redirect="~/Views/Shared/AccessDenied.aspx" />
</customErrors>
Quando si utilizza IIS Express viene visualizzata la pagina di errore IIS Express 401 standard.
Nel caso in cui non utilizzi IIS Express viene restituita una pagina vuota. Utilizzando la scheda Rete di Google Chrome per verificare la risposta, vedo che mentre la pagina è vuota viene restituito uno stato 401 nelle intestazioni
Quello che ho provato fino ad ora è l'utilizzo di suggerimenti da this SO answer poiché sto usando IIS Express ma a no inutilmente. Ho provato a utilizzare una combinazione <custom errors>
e <httpErrors>
senza fortuna: l'errore standard o la pagina vuota sono ancora visualizzati.
La sezione httpErrors
si presenta come questo al momento basata su the link dal above SO question (ho trovato anche un altro molto promising answer però senza fortuna - risposta vuota)
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough" >
<remove statusCode="401" />
<error statusCode="401" path="/Views/Shared/AccessDenied.htm" />
</httpErrors>
<!--
<httpErrors errorMode="Custom"
existingResponse="PassThrough"
defaultResponseMode="ExecuteURL">
<remove statusCode="401" />
<error statusCode="401" path="~/Views/Shared/AccessDenied.htm"
responseMode="File" />
</httpErrors>
-->
</system.webServer>
ho anche modificato il file applicationhost.config
e modificato <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
a <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated">
in base alle informazioni da iis.net. Durante il corso dei miei sforzi sono anche riuscito a incappare in questo errore come descritto in another SO question.
Come visualizzare pagine di errore personalizzate in Asp.Net Mvc 3?
Ulteriori informazioni
le seguenti azioni di controllo sono stati decorati con l'attributo Authorise
per un utente specifico.
Vorrei anche sapere come visualizzare gli errori personalizzati (nel mio caso un errore 403) - 500 errori funzionano bene ... –
Creata una piccola libreria per semplificare la procedura. È disponibile: https://github.com/Buildstarted/Errlusion – Buildstarted
Ho pensato che potresti essere interessato a vedere questo [post SO] (http://stackoverflow.com/questions/6308186/custom-errors-not-working-with -iisexpress) – CBRRacer