Sto utilizzando Owin per ospitare i controller WebAPI. Ho Owin middleware che esegue l'autenticazione e stabilisce quanto segue se l'autenticazione fallisce:Pagina di errore personalizzata quando si utilizza Owin
context.Response.StatusCode = (int) HttpStatusCode.Unauthorized;
Quando questo accade Voglio visualizzare una pagina HTML con alcune istruzioni per l'utente. (Ad esempio, "È necessario accedere.")
Al momento sto reindirizzando l'utente a una pagina accessdenied.html, ma preferirei se l'accesso negato sia stato mostrato direttamente senza che l'utente venga reindirizzato (Non voglio che il campo Posizione nel browser Web cambi).
Suppongo di poter generare l'HTML al volo e aggiungerlo alla risposta, ad esempio leggendo il contenuto HTML da una risorsa.
La mia domanda è: è possibile visualizzare automaticamente una pagina di errore di accesso negata utilizzando la configurazione? In ASP.NET "Traditioinal", è stato possibile istituire customErrors nel web.config, ma questo non sembra funzionare con Owin SelfHost:
<customErrors>
<error statusCode="401" redirect="~/accessdenied.html"/>
</customErrors>
Questo non funzionerà per gli host autonomi, perché 'VirtualPathUtility' è una parte di' System.Web' e richiede che IIS funzioni correttamente. –
Dovresti invece usare: 'request.Uri.AbsoluteUri.Replace (request.Uri.PathAndQuery, request.PathBase +"/Home/Error ")' – tmoreira
Se si esegue Response.Redirect, cambierà il codice di stato HTTP in 302. –