ASP.NET e Search Engine Optimization estavam realmente sendo considerados uma boa plataforma para sites otimizados. Uma das reclamações levantadas pelo artigo foi a maneira como o ASP.NET lida com erros personalizados. A reclamação gira em torno de dois códigos de status sendo gerados, primeiro um 302 ou temporário redirecionar é enviado. Em seguida, um código de status 200 é enviado para uma solicitação bem-sucedida. Esta é realmente a maneira correta de indicar o processo de página de erro personalizada e vou explicar por quê.
A premissa básica por trás das páginas de erro personalizadas no ASP.NET é que você, como desenvolvedor, pode designar uma página a ser renderizada quando uma exceção não tratada é lançada por uma solicitação. Você também pode designar páginas de erro específicas ou especializadas a serem exibidas quando um código de status específico, 404, por exemplo, é gerado. O código de status 404 é servido quando um recurso não pode ser encontrado pelo servidor.
Como designar uma página de erro personalizada
A primeira coisa que faço ao definir uma página de erro personalizada é adicionar a página para o site. A página de erro geralmente consiste em um aviso ao usuário de que algo está errado e uma pequena garantia de que nós (ou seja, eu) iremos consertar o mais rápido possível. Isso é configurado no arquivo web.config na seção customErrors. Este elemento possui dois atributos, defaultRedirect e mode. O atributo defaultRedirect especifica a página que é exibida quando uma exceção não tratada surge através da cadeia de eventos.
<
customErrors defaultRedirect =‘ ~/error.aspx ‘ modo =‘RemoteOnly‘/>
O atributo mode pode ser definido como On, Off ou RemoteOnly. Quando definido como On, a página de erro personalizada é exibida para computadores remotos e para o computador servidor local. Quando está definido como Desligado, nenhuma página de erro personalizada é exibida e os detalhes reais da exceção são despejados na página para qualquer visitante que esteja criando a exceção. Isso é conhecido como a Tela Amarela da Morte porque o texto tem um fundo amarelo.
Finalmente, o RemoteOnly mostrará apenas a página de erro personalizada para usuários remotos, mas as mensagens de exceção reais para o computador local. Isso é muito útil quando você tem acesso ao servidor da web e está tentando rastrear um bug incômodo.
Designando páginas personalizadas para erros de código de status
Um dos truques menos conhecidos com páginas de erro ASP.NET personalizadas são a capacidade de designar páginas personalizadas a serem enviadas ao navegador quando códigos de status específicos são gerados. Por exemplo, quando um status 404 ou página não encontrada é gerado, isso é um erro. Um código de status 404 é enviado em resposta ao navegador. No IIS você pode designar um recurso específico a ser enviado ao cliente ou um erro 404 genérico será exibido pelo navegador.
O ASP.NET permite que você designe páginas personalizadas para cada código de status. Um código de status é usado para informar o cliente da web sobre a solicitação. Um código de 200 significa sucesso, 301 significa redirecionado permanentemente, 404 significa não encontrado e 500 significa que houve um erro interno do servidor.
Para adicionar páginas de erro personalizadas para vários códigos de status, você pode adicioná-los ao elemento customErrors como este:
<
customErrors defaultRedirect =‘~/error.aspx‘modo=‘RemoteOnly ‘>
<
errorstatusCode =‘403‘redirect =‘ default.aspx ‘/>
<
erro statusCode =‘404‘redirect =‘ default.aspx ‘/>
customErrors >
Observe como redireciono a solicitação para a página inicial de uma página que não para und status. Faço isso apenas porque herdo muitos sites em que os proprietários não têm certeza do que eles realmente têm, ou há tantas páginas possíveis que essa é a última medida evitada para levar o visitante a algo importante no site. Se você configurar seu mecanismo de reescrita de URL corretamente, deverá conseguir impedir que qualquer um desses tipos de coisas aconteça.
Tratamento de erros personalizados em ASP.NET e códigos de status
Então, deixa a questão final, os códigos de status que são enviados quando uma página de erro personalizada é gerada no ASP.NET. O problema que {insira o nome aqui} estava tendo é que um código de status 302 foi enviado, seguido por um código de status 200. Exatamente como deveria funcionar! O código de status 302 é um redirecionamento temporário, portanto, estamos dizendo ao cliente que, por enquanto, é para onde esta página está indo, mas ela deve voltar em breve.
Sim, temos um erro, que deve ser resolvido em breve e esta página retornará a este local conforme o esperado, portanto, não me remova do seu índice, cache ou o que quer que seja.
Em seguida, uma página de erro personalizada é retornada com sucesso, portanto, o código de status 200 ou bem-sucedido é enviado ao cliente. Eu continuo dizendo cliente em vez de navegador porque o verdadeiro problema para a otimização de mecanismos de pesquisa é o que os spiders dos mecanismos de pesquisa realmente processam. Neste caso dizemos a eles, opa, eu tenho um erro, então por enquanto vá aqui. Essa página é processada e retornada com êxito, exatamente como queríamos.
Portanto, em resumo, configurar páginas de erro personalizadas no ASP.NET é uma tarefa bastante trivial. Os códigos de status gerados pelo processo da página de erro customizada estão corretos e conforme o esperado. Assim que o erro for corrigido, os mecanismos de pesquisa devem revisitar a página e obter o conteúdo adequado da página, portanto, um redirecionamento temporário ou código de status 302 é o código correto a ser retornado.