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?

StackOverflow https://stackoverflow.com/questions/1473855

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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top