Come generare un errore 401 a livello di codice in una pagina ASP.NET
-
03-07-2019 - |
Domanda
Come puoi vedere, questa è una domanda di uno sviluppatore non web. Vorrei avere una pagina ASPX che, in determinate circostanze, può generare un errore 401 dal codice. Idealmente dovrebbe mostrare la pagina standard IIS.
Soluzione
Impostare Response.StatusCode e quindi - se devi interrompere l'esecuzione - chiama Response.End ( ) .
Altri suggerimenti
Response.StatusCode = 401;
Response.End();
Penso di preferire ancora:
throw new HttpException(401, "Auth Failed")
Non credo che il metodo Response.StatusCode
inneschi errori personalizzati definiti nel file web.config, ad es.
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
<error statusCode="401" redirect="AuthFailed.htm" />
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
Il lancio di una nuova eccezione provoca sicuramente errori personalizzati.
Inoltre, potresti utilizzare una funzione di registrazione degli errori a livello di applicazione, come ELMAH o qualcosa, e non credo che il metodo Response.StatusCode
sia registrato anche lì.
Nota: ora vedo la domanda che, idealmente, dovrebbe essere mostrata la pagina di errore IIS standard. Ovviamente, le pagine di errore personalizzate sono non desiderate . Vorrei usare il metodo Response.StatusCode
in quel caso.
Dovresti essere in grado di usare solo quanto segue, secondo MSDN .
Throw New HttpException(401, "Auth Failed")
Modifica Dopo aver visto le altre risposte impostare il codice di stato sarebbe più appropriato.
Un commento aggiuntivo.
Se una parte della pagina è già stata scritta nel buffer di output, è importante cancellare qualsiasi contenuto bufferizzato o la pagina potrebbe non apparire correttamente.
Questo è abbastanza probabile in un ambiente basato su modelli. per esempio. Pagine master ...
Response.ClearContent();
Response.StatusCode = 401;
Response.End();