Modo CustomErrors = "Off"


254

Eu recebo um erro sempre que carrego meu aplicativo da web no provedor. Por causa do modo customErrors, tudo o que vejo é a mensagem "Erro de tempo de execução" padrão, instruindo-me a desativar customErrors para ver mais sobre o erro.

Exasperado, configurei meu web.config para ficar assim:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

E ainda assim, tudo o que recebo é a página de erros remotos estúpidos, sem informações úteis. O que mais posso fazer para desativar os customErrors ?!


1
tente adicionar @Model.Exception.Messageao #Shared/Error.cshtml
Muflix

Em geral, cuidado com as transformações de configuração (por exemplo, Web.Debug.config que pode alterar esse valor) e cuidado com definições duplicadas dessa seção / propriedade no arquivo (claramente não era o problema neste caso)
Graham

Respostas:


165

Isso me deixou louco nos últimos dias e não conseguiu contornar o problema, mas finalmente entendi:

No meu arquivo machine.config, eu tinha uma entrada em <system.web>:

<deployment retail="true" />

Isso parece substituir quaisquer outras configurações customError que você especificou em um arquivo web.config, definindo a entrada acima para:

<deployment retail="false" />

agora significa que posso ver novamente as mensagens de erro detalhadas necessárias.

O machine.configestá localizado em

32 bits

%windir%\Microsoft.NET\Framework\[version]\config\machine.config

64 bits

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

Espero que ajude alguém por aí e economize algumas horas de puxar o cabelo.


Bom ponto. É melhor voltar ao modo de varejo para true quando terminar, no entanto (ou desativar o modo de depuração no web.config, o que será um aborrecimento na sua máquina de desenvolvimento). Veja weblogs.asp.net/lasse/archive/2009/04/28/…
Stephen Kennedy

Essa parece ser uma configuração padrão no .NET 4.0 - tive o mesmo problema para descobrir isso. Concorde que é uma boa configuração para usar em um ambiente de produção, mas a visualização do erro REAL é muito importante ao depurar.
21412 Jeremy

não apenas economizar meu tempo, também salvou minha vida. que foi exatamente o que funcionou para mim
Pouya Samie

142

"Desativado" faz distinção entre maiúsculas e minúsculas.

Verifique se o "O" está em maiúsculas no seu arquivo web.config. Sofri isso algumas vezes (por mais simples que pareça)


49

No interesse de adicionar mais situações a essa pergunta (porque é aqui que eu olhei porque estava tendo exatamente o mesmo problema), aqui está a minha resposta:

No meu caso, recortei / colei o texto do erro genérico dizendo em vigor se você deseja ver o que está errado, coloque

<system.web>
   <customErrors mode="Off"/>
</system.web>

Então isso deveria ter resolvido, mas é claro que não! Meu problema era que havia um nó <system.web> várias linhas acima (antes de um nó de compilação e autenticação) e uma marca de fechamento </system.web> algumas linhas abaixo disso. Depois de corrigir isso, OK, problema resolvido. O que eu deveria ter feito é copiar / colar apenas esta linha:

<customErrors mode="Off"/>

Isto é dos anais de Coisas estúpidas que eu continuo fazendo repetidas vezes, no capítulo intitulado "Copie e cole seu caminho para a destruição".


Pergunta: Esta resposta implica que o ASP lê o web.config e outros arquivos de configuração de cima, ou seja: de cima para baixo. Eu pensei que os arquivos de configuração foram lidos como uma "instância única", o que significa que o compilador primeiro analisa o arquivo de configuração para obter precisão e depois o compila, mas parece compilá-lo em tempo real - linha por linha. Isso é verdade?
Fandango68

@ Fernando68, é melhor colocar isso como uma pergunta separada - uma discussão nos comentários não é exatamente ideal. Não sou engenheiro de .NET, mas claramente o .NET não está compilando linha por linha. É um arquivo Xml e, portanto, hierárquico. Mas se a hierarquia estiver mal formada, o analisador Xml lançará uma exceção ao analisá-la. Em outras palavras, ele precisa levar o arquivo Xml inteiro como um todo - mas se encontrar um Xml ruim, não poderá criar o objeto necessário!
Cyberherbalist

Eu já o levantei como uma pergunta separada stackoverflow.com/questions/30471043/… . Obrigado pela sua resposta, que são efetivamente as respostas que recebi no meu outro post. Cheers
Fandango68

10

Para aplicativos do Sharepoint 2010, você também deve editar C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\web.config e definir<customErrors mode="Off" />


7

Eu tentei a maioria das coisas descritas aqui. Eu estava usando o VWD e o arquivo web.config padrão continha:

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>

Alterei mode = "RemoteOnly" para mode = "Off". Ainda sem alegria. Em seguida, usei o gerenciador do IIS, as propriedades, a guia ASP.Net, a configuração de edição e a guia CustomeErrors. Isso ainda mostrava o RemoteOnly. Alterei isso para Desativado e, finalmente, pude ver as mensagens de erro detalhadas.

Quando inspecionei o web.config, vi que havia dois nós CustomErrors no system.web; e acabei de notar que a segunda entrada (a que eu estava mudando estava dentro de um comentário). Portanto, tente não usar o bloco de notas para inspecionar o web.config em um servidor remoto.

No entanto, se você usar o material de configuração de edição do IIS, ele reclamará de erros no web.config. Em seguida, você pode descartar todas as respostas que dizem "há algum erro de sintaxe XML no seu web.config"


Alterar o web.config no nível do site funcionou para mim. Anteriormente, eu havia mexido com o carregamento do arquivo web.config do aplicativo, falhando. Obrigado!
The1nk

7

A única resposta que realmente funcionou para corrigir isso, encontrei aqui: https://stackoverflow.com/a/18938991/550975

Basta adicionar isso ao seu web.config:

<configuration>  
  <system.webServer>  
    <httpErrors existingResponse="PassThrough"/>  
  </system.webServer>  
<configuration>

3
Eu encontrei <httpErrors errorMode="Detailed" />me deu todas as informações i needed`
alastairtree


5

Eu também tive esse problema, mas ao usar o Apache e o mod_mono. Para qualquer outra pessoa nessa situação, é necessário reiniciar o Apache após alterar o web.config para forçar a leitura da nova versão.


5

Se você ainda estiver acessando essa página, é provável que ela esteja explodindo antes de passar pela Web.

Verifique se o ASP.Net possui permissões necessárias para coisas como as pastas do .NET Framework, a metabase do IIS etc. Você tem alguma maneira de verificar se o ASP.Net está instalado corretamente e associado ao IIS corretamente?

Edit: Após o comentário de Greg, ocorreu-me que eu assumi que o que você postou era todo o seu mínimo web.config, existe mais? Se sim, você pode postar o web.config inteiro?


Nas poucas vezes em que deparei com esse problema, acabou sendo um erro no web.config - definitivamente passe por cima dele primeiro com um pente fino.
Greg Hurlman 19/09/08

Sim, exasperado, substituí meu web.config por essas configurações mínimas. Ainda não alegria
Radu094

O usuário no pool de aplicativos em uso não tinha permissões de leitura para o diretório em que meu aplicativo foi implantado. Ainda não consigo descobrir por que não foi possível obter um erro para mostrar que me informe qual era o problema.
lambacck

Geralmente, esse erro pode ser encontrado apenas no log de eventos do sistema / segurança (até o IIS 7), mas ter acesso ao log de eventos facilmente na maioria dos casos é o problema.
Nick Craver

5

Meu problema era que eu tinha isso definido no meu web.config

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" />
  <remove statusCode="500" />
  <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
  <error statusCode="500" responseMode="ExecuteURL" path="/Error/Internal" />
</httpErrors>

2
A substituição de <httpErrors errorMode="Detailed"ajuda como um exemplo
it3xl

2

Na verdade, o que eu descobri ao hospedar meu aplicativo da web é o código que você desenvolveu na sua máquina local é de uma versão superior à oferecida pela empresa de hospedagem. Se você tiver privilégios de administrador, poderá alterar o suporte da versão do Microsoft ASP.NET na configuração de hospedagem na web


2

Tivemos esse problema e foi devido ao usuário do IIS não ter acesso à configuração da máquina no servidor da web.


2

Também encontramos esse erro e, no nosso caso, era porque o usuário do pool de aplicativos não tinha mais permissões para o arquivo web.config. A razão pela qual ele perdeu suas permissões (tudo estava bem antes) foi porque tínhamos um backup do site em um arquivo rar e arrastei uma versão de backup do web.config do rar para o site. Parece que isso removeu todas as permissões do arquivo web.config, exceto eu, o usuário conectado.

Demorou um pouco para descobrir isso, porque eu verifiquei repetidamente as permissões no nível da pasta, mas nunca no nível do arquivo.


2

Eu tive o mesmo problema, mas achei a solução de uma maneira diferente.

-

O que fiz foi abrir as Configurações avançadas do pool de aplicativos no Gerenciador do IIS .

Lá, defino Ativar aplicativos de 32 bits como True .


1

Tente reiniciar o aplicativo (criando um app_offline.htm e excluí-lo) e se você ainda receber a mesma mensagem de erro, certifique-se de ter declarado customErrors apenas uma vez no web.config ou algo assim. Erros no web.config podem ter algum impacto estranho no aplicativo.


1
sempre que você modificar o web.config, o site será reiniciado, sem a necessidade de criar um app_offline.htm!
228106 Fevr

verdade, não tenho idéia do porquê sugeri o app_offline para redefinir o aplicativo. :)
Adam Vigh

1

Você tem algum caractere especial como æøå no seu web.config? Nesse caso, verifique se a codificação está definida como utf-8.


1

Esse aplicativo Web está definido abaixo de outros aplicativos na árvore de diretórios de um site? Verifique qualquer arquivo web.config pai para outras configurações, se houver. Além disso, faça com que seu diretório seja definido como um diretório de aplicativo no IIS.


1

Se você estiver usando a visualização 4 do MVC, poderá estar enfrentando isso porque está usando o HandleErrorAttribute. O comportamento foi alterado em 5 para que não lide com exceções se você desativar erros personalizados.


1

Você também pode tentar abrir o site em um navegador na máquina do servidor. Não desenvolvo muito o ASP.NET, mas lembro que a coisa dos erros personalizados tem uma configuração para exibir apenas o texto completo do erro no servidor, como medida de segurança.


1

Acabei de lidar com um problema semelhante. No meu caso, a versão padrão do site asp.net era 1.1 enquanto eu tentava iniciar um aplicativo da web 2.0. O erro foi bastante trivial, mas não ficou claro imediatamente por que os erros personalizados não desapareciam e o tempo de execução nunca gravava no log de eventos. A correção óbvia foi corresponder à versão na guia Asp.Net do IIS.


nós tivemos o mesmo problema. "connectionStrings" nó estava causando erro ao abrigo do quadro 1.1, enquanto que a aplicação deveria ter sido 2.0
mosheb

1

Verifique também se você está editando o web.config e não o website.config, como eu estava fazendo.


0

Eu tive o mesmo problema, e a causa era que o IIS estava executando o ASP.NET 1.1 e o site exigia o .NET 2.0.

A mensagem de erro não fez nada além de me tirar dos trilhos por várias horas.


0

Certifique-se de adicionar logo após o system.web

Coloquei no final do nó e não funcionou.


0

Se você estiver fazendo uma transformação de configuração, também poderá ser necessário remover a seguinte linha do arquivo web.config relevante.

<compilation xdt:Transform="RemoveAttributes(debug)" />

0

Tendo tentado todas as respostas aqui, verificou-se que meu Application_Errormétodo tinha o seguinte:

Server.ClearError();
Response.Redirect("/Home/Error");

A remoção dessas linhas e configurações corrigiu o problema. (O cliente ainda foi redirecionado para a página de erro com customErrors="On").


0

Eu tive o mesmo problema e passei pelo log do aplicativo Visualizador de Eventos, onde ele menciona claramente a causa da exceção. No meu caso, a exceção foi como abaixo ...

Informações de exceção:

Exception type: HttpException 
Exception message: The target principal name is incorrect.  Cannot generate SSPI context.
at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)

The target principal name is incorrect.  Cannot generate SSPI context.

Acabei de atualizar minha senha no pool de aplicativos e funciona para mim.


0

Em alguns casos, também é possível que o web.config não esteja formatado corretamente. Nesse caso, você deve passar por isso linha por linha antes de funcionar. Muitas vezes, reescrever regras é o culpado aqui.


0

Isso é realmente estranho. Eu recebi esse erro e após a reinicialização do meu servidor, ele desapareceu.


0

Para mim, foi um erro mais alto no web.config acima do system.web.

o arquivo blah não existia, portanto estava lançando um erro naquele momento. Como ainda não havia chegado à seção System.Web, estava usando a configuração padrão do servidor para CUstomErrors (On)


(Esta mensagem não parece fornecer uma resposta de qualidade para a questão edite sua resposta e melhorá-lo, ou apenas publicá-la como um comentário à pergunta..)
sɐunıɔ ןɐ qɐp
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.