Qual é a diferença entre customErrors e httpErrors?

Qual é a diferença entre as seções customErrors e httpErrors do arquivo web.config em aplicativos ASP.NET MVC?

Quais são as diretrizes para usar cada seção?

Isenção de responsabilidade: Isso é da minha experiência e não é um fato comprovado.

Ambos são usados ​​para definir o tratamento de erros de um site, mas softwares diferentes se referem a diferentes elementos de configuração.

customErrors são um elemento legado (compatível com versões anteriores), usado pelo Visual Studio Development Server (também conhecido como VSDS ou Cassini).

httpErrors é o novo elemento que é usado apenas pelo IIS7.

Isso destaca o possível problema ao desenvolver sites ASP.NET ao usar o VSDS em vez do IIS local.

Além disso, consulte este post sozinho sobre como lidar com mensagens de erro com o IIS7, se você deseja ter controle total da saída de erro.

Resumo:

  • Desenvolvendo em VSDS – use customErrors
  • Publicando o site no IIS6 – use customErrors
  • Publicando o site no IIS7 – use httpErrors .

e se você desenvolver com o VSDS mas publicar no IIS7 , então eu acho que você precisará dos dois.

* Atualizado em abril de 2016

O atributo customErrors é usado quando o código .net está emitindo uma exceção (404, 403, 500 etc) e o atributo httpErrors é usado quando o próprio IIS lança uma exceção.

  • / myfakeextensionslessurl -> httpErrors 404
  • /myfakeaspsx.aspx -> customErrors 404
  • /myfakeimage.jpg -> httpErrors 404
  • /throw500.apx -> customErrors 500
  • / throw500 -> customErrors 500

Há muitas armadilhas tentando configurar isso corretamente. Então, se você está procurando um exemplo rápido, as 2 melhores opções que você tem são:

Exemplo 1: Usando páginas html

                  

Exemplo 2: usando páginas aspx

                  

E nas páginas de erro aspx você precisa fazer algo assim (por exemplo, página 404):

 < % Response.StatusCode = 404; Response.TrySkipIisCustomErrors = true; %> 

Nota: O uso de extensões menos urls na seção customErrors não é possível! . (sem hacks)

Uma solução é desabilitar os erros personalizados e permitir que os erros do http manipulem a página personalizada. Um amigo criou essa configuração, quando eu encontrar algum tempo, compartilharei o código.

fundo

Uma boa página de erro personalizada irá:

  1. Mostrar a exceção real quando você visita a página do problema localmente
  2. Mostrar uma página personalizada quando você visita a página do problema remotamente
  3. Não vai redirect, mas simplesmente mostrar o conteúdo da página de erro (por causa de razões seo)
  4. Mostrará o código de status correto

Então, para esclarecer algumas opções em nossa configuração:

  1. customErrors mode = “RemoteOnly”. Você pode especificar aqui: On, Off, RemoteOnly. On = Mostra sempre as páginas de erro personalizadas, Off = Mostra sempre o erro real, RemoteOnly = Mostra localmente o erro, mas mostra a página de erro personalizada remotamente. Então, nós queremos RemoteOnly para a instrução 1
  2. customeErrors redirectMode = “ResponseRewrite”. Você pode sepcify aqui: ResponseRedirect, ResponseRewrite. O modus ResponseRedirect redirectá a página de erro para a página de erro personalizada. Para um rastreador de link (seo), isso resultará em 302 -> 500. Enquanto você deseja que o rastreador de link receba apenas um erro 500.
  3. httpErrors errorMode = “DetailedLocalOnly”, isto é igual ao modo customErrors. Opções que você tem: Custom, Detailed, DetailedLocalOnly

Um bom post no blog que me ajudou muito é: http://benfoster.io/blog/aspnet-mvc-custom-error-pages

versus


  • ainda disponível no IIS7 +
  • especificar páginas de erro personalizadas para solicitações manipuladas pelo ASP.NET
  • apenas lida com solicitações dentro do aplicativo ASP.NET
  • arquivos estáticos como arquivos HTML ou diretórios de diretório (“amigáveis”) não são manipulados

  • introduzido no IIS7
  • especificar páginas de erro personalizadas para solicitações tratadas pelo IIS
  • manipula solicitações no aplicativo ASP.NET E / OU manipula solicitações fora do – aplicativo ASP.NET *
  • todos os arquivos e URLs são manipulados *

Nota: não é mais necessário usar customErrors

Fonte citada: Custom 404 e páginas de erro no ASP.NET (excelente artigo)


ExecuteURL serve conteúdo dynamic, como uma página .aspx (o valor do path tem que ser um URL relativo do servidor ):

       

File exibe um arquivo de erro personalizado, como uma página .html:

       

Referência: Erros HTTP (www.iis.net)

para mais detalhes, leia o link http://www.iis.net acima

Seção de erros na configuração web é para fornecer abordagem de manipulação de erro http personalizado há duas seção, um customErrors dentro da seção system.web e outro httpErrors dentro da seção system.webServer (como dado abaixo)

customErrors: Esta seção estava em uso antes do IIS 7 ser introduzido, o IIS 6 5 e antes de usar totalmente esta seção para manipular erros http personalizados de acordo com o código de status http.

httpErrors: IIS 7 e posterior usam esta seção, bem como a seção customErrors para manipular erros de http personalizados com base em suas extensões de arquivo, se solicitado. Registrador de extensão de página com DLL ISAPI (.aspx, ashx, .asmx, .svc etc) como index.aspx IIS seleciona a configuração da seção customeErrors caso escolha a configuração de httpErrors (o modo hospedado do IIS 7 deve ser definido como modo integrado e não clássico)

abaixo estão os exemplos que são para o link de verificação de erro 404:

httperrors vs customerrors no webconfig, iis, asp.net