Como gerar um erro 401 programaticamente em uma página ASP.NET
-
03-07-2019 - |
Pergunta
Como você pode ver esta é uma pergunta de um desenvolvedor não web. Eu gostaria de ter uma página ASPX que, em determinadas circunstâncias, pode gerar um erro 401 a partir do código. Idealmente, deveria mostrar a página padrão do IIS.
Solução
Response.StatusCode e depois - se você precisa de execução stop - chamada Response.End ( ) .
Outras dicas
Response.StatusCode = 401;
Response.End();
Eu acho que eu ainda prefiro:
throw new HttpException(401, "Auth Failed")
Eu não acho que os erros gatilhos método Response.StatusCode
personalizados definidos no arquivo web.config, por exemplo,
<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>
Jogando uma nova exceção definitivamente desencadeia erros personalizados.
Além disso, você pode estar usando um recurso de log de erro de todo o aplicativo, como ELMAH ou alguma coisa, e eu não acho que o método Response.StatusCode
seria registrado lá, também.
Nota: eu vejo agora a questão disse que, idealmente, a página de erro IIS padrão deve ser mostrado. Obviamente, as páginas de erro personalizadas são não queria . Gostaria de usar o método Response.StatusCode
nesse caso.
Você deve ser capaz de usar apenas o seguinte, de acordo com MSDN .
Throw New HttpException(401, "Auth Failed")
Editar Depois de ver as outras respostas definindo o código de status seria mais apropriado.
Um comentário adicional.
Se uma parte da página já foi escrito para a saída de buffer, então é importante que você limpar qualquer conteúdo tamponada ou a página pode não aparecer corretamente.
Este é bastante provável em um ambiente templated. por exemplo. Páginas mestras ...
Response.ClearContent();
Response.StatusCode = 401;
Response.End();