Qual é a diferença entre as seções customErrors
e httpErrors
do arquivo web.config nos aplicativos ASP.NET MVC?
Quais são as diretrizes para o uso de cada seção?
web-config
iis-7.5
Alan T
fonte
fonte
Respostas:
Disclaimer: Isso é da minha experiência e não um fato comprovado.
Ambos são usados para definir o tratamento de erros para um site, mas software diferente se refere a diferentes elementos de configuração.
customErrors
é um elemento legado (compatível com versões anteriores), usado pelo Visual Studio Development Server (também conhecido como VSDS ou Cassini).httpErrors
são o novo elemento 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, refira-me a esta postagem sobre como lidar com mensagens de erro com o IIS7, se desejar ter controle total da saída do erro.
Resumo:
VSDS
usocustomErrors
IIS6
- usarcustomErrors
IIS7
usohttpErrors
.e se você desenvolver,
VSDS
mas publicar paraIIS7
, acho que precisará de ambos.fonte
* Atualizado em abril de 2016
O atributo customErrors é usado quando o código .net está lançando uma exceção (404, 403, 500 etc) e o atributo httpErrors é usado quando o próprio IIS está lançando uma exceção.
Existem muitas armadilhas tentando configurar isso corretamente. Portanto, se você está procurando um exemplo rápido, as 2 melhores opções 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 (página 404 do exemplo):
Nota: Não é possível usar extensões com menos URLs na seção customErrors ! .(sem hacks)
Uma solução é desabilitar os erros personalizados e permitir que os erros http tratem 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:
Então, para esclarecer algumas opções em nossa configuração:
<customErrors mode="RemoteOnly"
. Você pode especificar aqui:On
,Off
,RemoteOnly
.On
= Sempre mostrar páginas de erro personalizadasOff
= Sempre mostra o erro realRemoteOnly
= Mostra o erro localmente, mas mostra a página de erro personalizada remotamente. Então, queremosRemoteOnly
declaração 1<customErrors redirectMode="ResponseRewrite"
. Você pode especificar aqui:ResponseRedirect
ouResponseRewrite
. OResponseRedirect
modo redirecionará a página de erro para a página de erro personalizada. Para um rastreador de links (SEO), isso resultará em 302 -> 500, mas você deseja que o rastreador de links receba um erro 500.<httpErrors errorMode="DetailedLocalOnly"
. É o equivalente aocustomErrors
modo. As 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
fonte
<customErrors>
versus<httpErrors>
<customErrors>
<httpErrors>
Fonte citada: 404 personalizadas e páginas de erro no ASP.NET (excelente artigo)
ExecuteURL
serve conteúdo dinâmico, como uma página .aspx (opath
valor deve ser um URL relativo ao servidor ):File
exibe um arquivo de erro personalizado, como uma página .html:Referência: erros de HTTP (www.iis.net)
para mais detalhes, leia o link www.iis.net acima
fonte
it's no loger necesary to use customErrors
e a citação, esta é realmente a informação que eu estava atrás :-)A seção de erros na configuração da web é para fornecer uma abordagem personalizada de tratamento de erros http, existem duas seções, uma customErrors dentro da seção system.web e outra httpErrors dentro da seção system.webServer (conforme fornecido abaixo)
customErrors: Esta seção estava em uso antes da introdução do IIS 7, do IIS 6 5 e antes de usar completamente esta seção para manipular erros http personalizados de acordo com o código de status http.
httpErrors: o IIS 7 e posterior usam esta seção, bem como a seção customErrors , para manipular erros http personalizados com base em suas extensões de arquivo, se solicitado, registre-se na extensão de página com a DLL ISAPI (.aspx, ashx, .asmx, .svc etc), como index.aspx Configuração de seleção do IIS na seção customeErrors , caso contrário, ela escolhe a configuração de httpErrors (o modo hospedado do IIS 7 deve ser definido como um humor integrado, não clássico)
Abaixo estão os exemplos para o link de verificação de tratamento de erros 404:
httperrors vs customerrors em webconfig, iis, asp.net
fonte