Como definir programaticamente Response.StatusCode diferente de 200 OK em ASP.NET Aplicação e ainda servir de conteúdo para o cliente com sucesso?
-
16-09-2019 - |
Pergunta
Configuração Response.StatusCode = 404
não serve conteúdo sob nem IE8 nem Chrome? Ele funciona no Mozilla embora eu achar estranho!
Do mais simples das coisas - projeto de aplicativo web asp.net vazia com a página Default.aspx vazio. Em uso evento Page_Load o seguinte:
protected void Page_Load( object sender, EventArgs e )
{
Response.StatusCode = 404;
}
Isso efetivamente define o código de status da solicitação atual para 404, não há dúvida sobre isso. Ao renderizar sob IE8 ou o Chrome, ou pode haver alguns outros navegadores, bem como - eu não testei, a página real não aparecer em tudo. Esses navegadores exibir suas páginas de erro padrão 404 (não padrão erros personalizados do IIS). Exemplo no IE8:
The webpage cannot be found
HTTP 404
Most likely causes:
•There might be a typing error in the address.
•If you clicked on a link, it may be out of date. ... and so on ...
O que eu realmente quero fazer, porém, é para servir 404 página de erro com o código de erro 404 que vai realmente dizer o navegador ou o rastreador ou quem quer que esta página não existe - não só para mostrar alguma mensagem de erro fantasia personalizado com estatuto mensagem 200 OK.
Usando mostra violinista que estou realmente realmente servindo o pedido, mas o navegador está ignorando totalmente ?!
A minha pergunta - como posso definir 404 código de status e ainda processar o conteúdo da página? Exemplo - http://www.intel.com/invalidpage.wow . Usando mostra violinista que esta página é servido com código de status 404.
Solução
Por padrão IE irá mostrar a sua página de erro personalizada se a resposta para o erro é menor do que uma quantidade configurável. Eu acredito que o montante é de 512 bytes, mas vou tentar encontrar alguma confirmação sobre isso. Então tudo que você precisa fazer é colocar mais conteúdo em sua resposta.
EDIT: Este post descreve os limites. Um dos comentários mostra as configurações de chave do Registro para alterar esses valores. A chave é:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ ErrorThresholds
Outras dicas
Você não servem o conteúdo, você definir uma página de erro personalizada no nível do servidor web (IIS) ou no web.config no caso de asp.net