Implantando site: 500 - Erro interno do servidor

189

Estou tentando implantar um aplicativo ASP.NET. Eu implantei o site no IIS, mas ao visitá-lo com o navegador, ele me mostra o seguinte:

erro de servidor

500 - Erro interno do servidor.

Há um problema com o recurso que você está procurando e ele não pode ser exibido.

Depois de brincar com o web.config, obtive:

A página não pode ser exibida porque ocorreu um erro interno do servidor.

Como posso ver o problema real por trás desse erro no servidor?

Jacob Jedryszek
fonte
1
Certifique-se de que você tem o mapeamento de curinga no lugar para aplicação MVC no diretório ...
sajoshi

Respostas:

297

Primeiro, você precisa ativar e ver erros detalhados de suas mensagens da Web, porque esta é uma mensagem geral sem fornecer informações sobre o que realmente está acontecendo por motivos de segurança.

Com o erro detalhado, você pode localizar o problema real aqui.

Além disso, se você pode executar o navegador no servidor , obtém detalhes sobre o erro, porque o servidor reconhece que você é local e mostra para você. Ou, se você puder ler o log do servidor usando o Visualizador de Eventos, também verá os detalhes do seu erro.

No IIS 6

<configuration>
    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true"/>
    </system.web>
</configuration>

No IIS 7

<configuration>
    <system.webServer>
        <httpErrors errorMode="Detailed" />
        <asp scriptErrorSentToBrowser="true"/>
    </system.webServer>
    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true"/>
    </system.web>
</configuration>

Nota: Você pode evitar o Debug = true . Você só precisa fechar os erros personalizados por um tempo e obter a página de erro detalhada.

Referência: Ativando a mensagem de erro personalizada do Windows nos artigos de ajuda do Go Daddy .

Além disso, isso pode ajudar: Como habilitar as mensagens de erro detalhadas (do IIS).

Aristos
fonte
9
Obrigado pelo post! A parte que fez isso por mim foi: <httpErrors errorMode = "Detalhado" />
jaseeey 10/11/14
@codemonkeyliketab Deve ser o mesmo ... ou similar ... se você executar o IIS Express em seu computador abrir o seu EventViewer ...
Aristos
4
run the browser on the servertrabalhou para mim .. Obrigado irmão
Rajshekar Reddy
1
@Learning sim, há - você ativar o erro detalhada apenas para curto período de tempo para sido capaz de encontrar alguns de seus erros e fazer o seu aplicativo em execução - então você fechá-lo de volta
Aristos
1
Obrigado, ativar mensagens de erro detalhadas do IIS ajudou.
Vadim Tofan
25

Eu estava puxando meu cabelo por causa dessa questão. Assegurar que a seguinte entrada estava no web.configarquivo raiz corrigiu-a para mim:

<configuration>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
</configuration>

Lembre-se de que você deve adicionar isso aos elementos XML existentes , se eles já estiverem lá. Você não pode simplesmente adicionar no final do arquivo, porque não pode ter várias cópias de qualquer elemento.

Joshua Frank
fonte
9

Para mim, o seguinte código no web.config foi o culpado. Quando o removi, o site funcionou bem.

  <staticContent>
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  </staticContent>
user3638709
fonte
1
Obrigado .. trabalhou para mim, mas esse mimeMap é necessário para a exibição de vídeos?
Panky sharma
9

Finalmente, resolvi o erro "500 servidor interno" ao implantar o aplicativo ASP.NET MVC 3.0 na hospedagem compartilhada godaddy.ocm.

de alguma forma, houve discrepâncias na versão dos arquivos DLL referenciados e na versão mencionada no arquivo web.config.

Eu tentei todas as opções mencionadas em vários fóruns. Nada ajudou, embora todos tenham sugerido o mesmo tipo de correção, mas de alguma forma não funcionou no meu cenário. Finalmente, depois de bater minha cabeça por dois dias. Decidi excluir todas as referências de arquivos DLL e excluir web.cofig (fazer uma cópia local) do projeto, deixar o aplicativo lançar o erro e adicionar os arquivos DLL, um por um, copiando para local = true.

Depois que todos os arquivos DLL foram adicionados, criei um novo aplicativo ASP.NET MVC e copiei o web.config do novo aplicativo para o meu aplicativo real. Portanto, meu aplicativo atual agora possui um novo web.config e copiei a cadeia de conexão e outras referências da cópia local do web.config que salvei.

Acabei de compilar o aplicativo e publiquei em uma pasta local e envie a FTP pela pasta publicada para o goDaddy.

Funcionou e, finalmente, meu problema foi resolvido.

Manish kumar
fonte
Meu erro resolvido por: stackoverflow.com/questions/11359957/… Também tive que instalar o Elmah
por G
7

No meu caso, cometi um erro no meu web.configarquivo. De alguma forma, a chave do aplicativo foi colocada na tag <appSettings>. Mas eu me pergunto por que ele não exibe um erro de configuração. O erro 500 é muito genérico para investigar o problema.

Van Thi
fonte
Só tinha o mesmo aqui. O web.config foi copiado por engano para um subdiretório e causou uma distorção distorcida, embora eu defina "mostrar erros detalhados" como verdadeiro.
Avni Yayin
7

Minha primeira tentativa de publicar e executar um site muito simples, servindo apenas HTML produzido "A página não pode ser exibida porque ocorreu um erro interno do servidor".

O problema: eu tinha o site definido como .NET 3.5 no Visual Studio (clique com o botão direito do mouse em projeto do site -> Páginas de propriedades -> Compilar), mas tinha o site no Azure configurado como .NET 4.0. Opa! Mudei para 3.5 no Azure e funcionou.

kenswdev
fonte
5

Além das outras sugestões, altere o existingResponseatributo do httpErrorsnó para Autofrom Replaceou remova completamente essa propriedade.

<httpErrors existingResponse="Replace" />
                              ^^^^^^^ not going to work with this here
ErikE
fonte
4

O IIS também relata o código de status 500 sem dicas de log de eventos, se houver permissões insuficientes no diretório pessoal físico (por exemplo, o IIS_IUSRS não tem acesso).

lapso
fonte
3

Erro no servidor 500 - Erro interno no servidor. Há um problema com o recurso que você está procurando e ele não pode ser exibido. Goddady. Hospedagem - Web - Economia - Windows Plesk

No meu caso, substituo este código:

<configuration> 
  <system.webServer> 
    <httpErrors errorMode="Detailed" /> 
    <asp scriptErrorSentToBrowser="true"/> 
  </system.webServer> 
  <system.web> 
    <customErrors mode="Off"/>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web> 
</configuration>

Altere a estrutura 3.5 para a estrutura 4. Ele mostra meu erro detalhado. Eu apago o código em:

<httpModules></httpModules>

Isso resolveu meu problema.

ThanGio
fonte
3

Para o IIS 8 Há uma etapa extra a ser feita, além de alterar o customErrors = Off para mostrar o conteúdo do erro.

<system.web>
   <customErrors mode="Off" />
</system.web>
<system.webServer>
   <httpErrors existingResponse="PassThrough" errorMode="Detailed"/>
</system.webServer>

Raul respondeu à pergunta neste link Desativar erros personalizados do IIS8 por Raul

Michelle
fonte
você perdeu o fechamento / depois de "Detalhado"
manuel-84
Essa solução era o necessário para o IIS 10.0.14393.0.
Marcus Parsons
2

Provavelmente, o seu arquivo web.config está errado ou está faltando alguma tag. Resolvi meu problema usando as tags de configuração corretas para o .NET 4.

<system.web>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0">
        <assemblies>
            <add assembly="System.Deployment, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        </assemblies>
    </compilation>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
        <namespaces>
            <clear/>
            <add namespace="System"/>
            <add namespace="System.Collections"/>
            <add namespace="System.Collections.Specialized"/>
            <add namespace="System.Configuration"/>
            <add namespace="System.Text"/>
            <add namespace="System.Text.RegularExpressions"/>
            <add namespace="System.Web"/>
            <add namespace="System.Web.Caching"/>
            <add namespace="System.Web.SessionState"/>
            <add namespace="System.Web.Security"/>
            <add namespace="System.Web.Profile"/>
            <add namespace="System.Web.UI"/>
            <add namespace="System.Web.UI.WebControls"/>
            <add namespace="System.Web.UI.WebControls.WebParts"/>
            <add namespace="System.Web.UI.HtmlControls"/>
        </namespaces>
    </pages>
    <authentication mode="None"/>
</system.web>
Edu Pelais
fonte
2

Percebi que as permissões para os arquivos e pastas em seu servidor também são importantes. Carreguei meus arquivos de um sistema operacional Linux e geralmente as permissões são limitadas para leitura e gravação. Portanto, quando carregadas, a permissão ainda é a mesma da máquina local.

Eu tive o mesmo erro e apenas alterei as permissões da pasta que eu havia carregado e o erro desapareceu.

Espero que ajude alguém.

Mark Kasina
fonte
Esta resposta não é basicamente a mesma de julho de 2014 ?
Wai Ha Lee
1

500 Erro interno
Windows Hosting Error

Godaddy Hosting issue

Estou enfrentando o mesmo problema, mas agora meu problema foi resolvido. Sempre use nesta hospedagem isso que funciona.

Também vou recomendar a todos que façam as alterações que você deseja fazer no seu arquivo web.config. Faça um por um e teste o mesmo no domínio ativo, para encontrar o problema exato ou os recursos que o seu provedor de hospedagem não permite que você use.

<?xml version="1.0"?>

<configuration>
    <system.web>
        <trust level="Medium"/>
        <compilation debug="true" targetFramework="4.5">
            <assemblies>
                <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            </assemblies>
        </compilation>

        <httpRuntime targetFramework="4.5" />
        <sessionState mode="InProc" cookieless="false" timeout="90" />
        <authentication mode="Forms">
            <forms loginUrl="default.aspx"  
                   defaultUrl="default.aspx"
                   protection="All"
                   cookieless="UseCookies"
                   slidingExpiration="false"
                   timeout="30"
                   name="aeon.corpusjuris.in" />
        </authentication>

        <customErrors 
            mode="Off" 
            defaultRedirect="errorpage.aspx">

            <error statusCode="403" redirect="errorpage.aspx"/>
            <error statusCode="404" redirect="errorpage.aspx"/>
        </customErrors>

        <!--  <httpModules>
                <add name="HTTPCaching" type="HTTPCaching"/>
            </httpModules>
        -->
    </system.web>

    <runtime>
        <performanceScenario value="HighDensityWebHosting"  />
    </runtime>

    <system.webServer>
        <!--  <modules runAllManagedModulesForAllRequests="true">
                <add name="HTTPCaching" type="HTTPCaching"/>
            </modules>
        -->

        <defaultDocument>
            <files>
                <clear />
                <add value="default.aspx" />
            </files>
        </defaultDocument>

        <httpErrors errorMode="Detailed" />
        <asp scriptErrorSentToBrowser="true"/>

        <staticContent>
            <clientCache cacheControlCustom="public"
                         cacheControlMaxAge="60:00:00"
                         cacheControlMode="UseMaxAge" />
        </staticContent>
    </system.webServer>

    <system.web.extensions>
         <scripting>
             <webServices>
                 <jsonSerialization maxJsonLength="90000000">
                 </jsonSerialization>
             </webServices>
         </scripting>
    </system.web.extensions>

</configuration>
Tushar Tyagi
fonte
no meu caso, o erro foi causado por <httpRuntime enableVersionHeader = "false" /> no web.config
b3wii
1

Se você estiver usando um HttpHandler personalizado (ou seja, implementando IHttpModule), verifique se está inspecionando chamadas para o Errormétodo dele.

Você poderia fazer com que seu manipulador jogasse o real HttpExceptions(que possui uma Messagepropriedade útil ) durante a depuração local como esta:

    public void Error(object sender, EventArgs e)
    {
        if (!HttpContext.Current.Request.IsLocal)
            return;
        var ex = ((HttpApplication)sender).Server.GetLastError();
        if (ex.GetType() == typeof(HttpException))
            throw ex;
    }

Verifique também as exceções InnerException.

Protetor um
fonte
1

Erro interno do servidor 500 pode ocorrer devido a vários motivos. O primeiro motivo pode ser que o arquivo web.config não foi criado corretamente, significa que você perdeu uma tag no arquivo web.config. Em segundo lugar, esse erro pode ocorrer devido a algum problema de código. Para verificar qual componente do aplicativo Web está causando esse erro, verifique a configuração do Aplicativo no arquivo web.config. Os detalhes de solução e rastreamento de erro interno do servidor 500 com diagrama são fornecidos aqui:

Manish
fonte
Este registro de domínio expirou em 15/06/2018.
26618 Patricia
O link agora está servindo malware. Eu removi o link
Liam
0

Verifique se a sua conta usa o IIS 7. Para obter mais informações, consulte Personalizando as configurações do IIS na sua conta de hospedagem do Windows. Siga as instruções em Alterando o modo de pipeline na sua conta de hospedagem do Windows IIS 7. Selecione Modo de pipeline integrado. Na seção Referências do projeto, defina Copiar local como True para os seguintes assemblies:

System.Web.Abstractions
System.Web.Helpers
System.Web.Routing
System.Web.Mvc
System.Web.WebPages

Adicione os seguintes assemblies ao seu projeto e defina Copy Local como True:

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
Publish your application.
Kurkula
fonte
0

Às vezes, o motivo pode ser que um dos seus assemblies .dll não esteja registrado corretamente no servidor.

Por exemplo, você pode executar com êxito um aplicativo Web C # Excel em sua máquina local com o Office instalado, enquanto obtém o erro 500 na implantação do servidor, porque não há um pacote Office instalado no servidor e, portanto, obtém o erro do servidor.

user3745869
fonte
0

Para quem tem essa possibilidade (hospedagem VPS, não hospedagem na web):

Conecte-se ao seu servidor de hospedagem via Área de Trabalho Remota. Abra o Navegador da Web na área de trabalho remota e você verá a descrição detalhada do erro.

Você não precisa modificar o web.config ou expor detalhes a mais ninguém.

Tomas Kubes
fonte
0

Se você estiver usando o IIS 8.5, talvez seja necessário alterar a configuração do ApplicationPool ID de ApplicationPoolId para NetworkService

Clique com o botão direito do mouse no Pool de aplicativos em questão, clique em "Configurações avançadas" e role para baixo até ID - provavelmente será definido como ApplicationPoolIdentity . Clique no botão (..) e selecione NetworkService na lista suspensa.

Além disso, verifique se, se for um aplicativo .NET 2.0, você não está referenciando a estrutura 4.0 no seu Pool de Aplicativos.

Steve Woods
fonte
0

Antes de alterar o web.configarquivo, verifiquei se a .NET Frameworkversão que você está usando é exatamente (quero dizer, 4.5! = 4.5.2) a mesma em comparação com as suas GoDaddyconfigurações (configurações do ASP.Net no seu Plesk panel). Isso deve alterar automaticamente o arquivo web.config para a estrutura correta.

Observe também que, por enquanto (janeiro '16), GoDaddytrabalha com ASP.Net 3.5e 4.5.2. Para usar 4.5.2com o Visual Studio, ele deve ser 2012ou mais recente; caso contrário, 2015, você deve baixar e instalar o .NET Framework 4.5.2 Developer Package.

Se ainda não estiver funcionando, sim, sua próxima etapa deve ser ativar o relatório de erros detalhado para que você possa depurá-lo.

Sergio R
fonte
0

Recentemente, entrei no mesmo problema, o espaço em disco estava cheio no servidor. A limpeza de algum espaço resolveu o problema.

Achintya
fonte
0

Outro motivo pode ser a reescrita do URL, basta remover / comentar a seção "reescrever" no arquivo web.config

krishna chegonda
fonte