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.

Foi útil?

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();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top