web-dev-qa-db-fra.com

Site Web de déploiement: 500 - Erreur de serveur interne

J'essaie de déployer une application ASP.NET. J'ai déployé le site sur IIS, mais lorsque vous le visitez avec le navigateur, il me montre ceci:

Erreur du serveur

500 - Erreur interne du serveur.

Il existe un problème avec la ressource que vous recherchez et il ne peut pas être affiché.

Après avoir bidouillé avec le web.config, j'ai eu:

La page ne peut pas être affichée car une erreur de serveur interne s'est produite.

Comment puis-je voir le problème réel derrière cette erreur de serveur?

170
Jacob Jedryszek

Tout d'abord, vous devez activer et voir les erreurs détaillées de vos messages Web, car il s'agit d'un message général sans donner d'informations sur ce qui se passe réellement pour des raisons de sécurité.

Avec l'erreur détaillée, vous pouvez localiser le problème réel ici.

De plus, si vous pouvez exécuter le navigateur sur le serveur, vous obtenez des détails sur l'erreur, car le serveur reconnaît que vous êtes local et vous la montre. Si vous pouvez lire le journal du serveur à l'aide de l'observateur d'événements, vous voyez également les détails de votre erreur.

Sur IIS 6

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

Sur IIS 7

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

Remarque: Vous pouvez éviter le débogage = true. Il vous suffit de fermer les erreurs personnalisées pendant un certain temps et d’obtenir la page d’erreurs détaillée.

Référence: Activation de la messagerie d'erreur personnalisée Windows dans Articles d'aide de Go de papa.

En outre, cela peut aider: Comment activer les messages d'erreur détaillés (à partir d'IIS).

266
Aristos

Je tirais mes cheveux sur cette question. S'assurer que l'entrée suivante se trouvait dans le fichier racine web.config l'a corrigé pour moi:

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

Rappelez-vous que vous devez ajouter ceci aux éléments XML existants, s'ils sont déjà présents. Vous ne pouvez pas simplement ajouter à la fin du fichier, car vous ne pouvez pas avoir plusieurs copies d'un élément.

23
Joshua Frank

J'ai finalement résolu cette erreur "500 Internal Server" lors du déploiement de l'application ASP.NET MVC 3.0 sur un hébergement mutualisé godaddy.ocm.

en quelque sorte, il y avait des divergences dans la version de DLL fichiers référencés et dans la version mentionnée dans le fichier web.config.

J'ai essayé toutes les options mentionnées dans divers forum. Rien n’a aidé, bien que tout le monde ait suggéré le même type de solution, mais cela n’a pas fonctionné dans mon scénario. Enfin, après avoir frappé ma tête pendant deux jours, j'ai décidé de supprimer tout le fichier DLL - référence du fichier et de supprimer web.cofig (créer une copie locale) du projet et de laisser l'application renvoyer l'erreur, puis d'ajouter les DLL fichiers un par un, créant une copie vers local = true.

Après l’ajout de tous les fichiers DLL, j’ai créé une nouvelle application ASP.NET MVC et copié le fichier web.config de la nouvelle application dans mon application réelle. J'ai ensuite copié la chaîne de connexion et d'autres références à partir de la copie locale de web.config que j'ai sauvegardée.

Je viens de compiler l'application et publié dans un dossier local Et FTP le dossier publié à goDaddy.

Cela a fonctionné et finalement mon problème a été résolu.

9
Manish kumar

Dans mon cas, j'ai mis une erreur dans mon fichier web.config. La clé d’application a été placée sous la balise <appSettings>. Mais je me demande pourquoi il n’affiche pas d’erreur de configuration. L'erreur 500 est trop générique pour enquêter sur le problème.

7
Van Thi

Pour moi, le code suivant dans le fichier web.config était le coupable. Quand je l'ai enlevé, le site Web a bien fonctionné.

  <staticContent>
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  </staticContent>
7
user3638709

Ma première tentative de publication, puis d’exécution d’un site très simple ne servant que du code HTML est produite "La page ne peut pas être affichée car une erreur de serveur interne s’est produite."

Le problème: le site était défini sur .NET 3.5 dans Visual Studio (projet de site Web lié à un clic droit -> Pages de propriétés -> Construire), mais le site Web dans Azure avait été configuré en tant que .NET 4.0. Oops! Je l'ai changé en 3.5 dans Azure et cela a fonctionné.

7
kenswdev

Outre les autres suggestions, veillez à modifier l'attribut existingResponse du noeud httpErrors en Auto à partir de Replace ou à supprimer entièrement cette propriété.

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

IIS signale également le code d'état 500 sans indication du journal des événements si les autorisations sur le répertoire de base physique sont insuffisantes (c'est-à-dire que IIS_IUSRS n'a pas d'accès).

3
lapsus

J'ai réalisé que les autorisations pour les fichiers et les dossiers de votre serveur importaient également. J'ai téléchargé mes fichiers depuis un système d'exploitation Linux et les autorisations sont généralement limitées en lecture et en écriture. Ainsi, lors du téléchargement, les autorisations sont toujours les mêmes que sur l'ordinateur local. 

J'ai eu la même erreur et je viens de changer les autorisations pour le dossier que j'avais téléchargé et l'erreur a disparu.

J'espère que ça aide quelqu'un.

2
mark kasina

Votre fichier web.config est probablement incorrect ou il manque une balise. J'ai résolu mon problème en utilisant les balises de configuration correctes pour .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>
2
Edu Pelais

500 erreur interne 
Erreur d'hébergement Windows 

Problème d'hébergement GoDaddy 

J'ai été confronté au même problème, mais maintenant mon problème a été résolu. Toujours utiliser dans cet hébergement cela fonctionne.

Je vous recommanderai également à tous les changements que vous souhaitez apporter à votre fichier web.config. Faites-le un par un et testez-le de la même manière sur le domaine actif afin de trouver le problème exact ou les fonctionnalités que votre fournisseur d'hébergement ne vous permet pas d'utiliser.

<?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>
1
Tushar T.

Erreur de serveur 500 - Erreur interne du serveur . Il existe un problème avec la ressource que vous recherchez et il ne peut pas être affiché. Goddady. Hébergement - Web - Économie - Windows Plesk

Dans mon cas, je remplace ce code:

<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>

Puis changez le framework 3.5 en framework 4. Cela montre mon erreur détaillée. Je supprime le code dans:

<httpModules></httpModules>

Cela a résolu mon problème.

1
ThanGio

Assurez-vous que votre compte utilise IIS 7. Pour plus d'informations, voir Personnalisation des paramètres IIS sur votre compte d'hébergement Windows . Suivez les instructions de la section Modification du mode de pipeline sur votre hébergement Windows IIS 7. Compte. Sélectionnez le mode Pipeline intégré . Dans la section Références de projet, définissez Copy Local sur True pour les assemblys suivants:

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

Ajoutez les assemblys suivants à votre projet, puis définissez Copy Local sur True:

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

Pour ceux qui ont cette possibilité (hébergement VPS pas hébergement web):

Connectez-vous à votre serveur d'hébergement via Remote Desktop. Ouvrez le navigateur Web à partir de votre bureau distant et vous verrez la description détaillée de l'erreur.

Vous n'avez pas besoin de modifier web.config ou d'exposer des détails à qui que ce soit.

0
Tomas Kubes

Pour IIS 8

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

Désactiver les erreurs personnalisées IIS8 par Raul

0
Aviva

Avant de modifier le fichier web.config, je voudrais vérifier que la version .NET Framework que vous utilisez est exactement (je le veux dire 4.5! = 4.5.2) identique à vos paramètres GoDaddy (paramètres ASP.Net dans votre Plesk panel). Cela devrait automatiquement changer votre fichier web.config dans le cadre correct.

Notez également que pour le moment (janvier 2016), GoDaddy fonctionne avec ASP.Net 3.5 et 4.5.2. Pour utiliser 4.5.2 avec Visual Studio, il doit être 2012 ou plus récent. Dans le cas contraire, vous devez télécharger et installer le package du développeur .NET Framework 4.5.2.

Si cela ne fonctionne toujours pas, alors oui, votre prochaine étape devrait être l'activation du rapport d'erreur détaillé afin que vous puissiez le déboguer.

0
Sergio R

Si vous utilisez un HttpHandler personnalisé (c'est-à-dire, implémentant IHttpModule), assurez-vous d'inspecter les appels à sa méthode Error.

Vous pouvez demander à votre gestionnaire de lancer la variable HttpExceptions (qui possède une propriété utile Message) lors du débogage local, comme ceci:

    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;
    }

Assurez-vous également d'inspecter la InnerException de l'exception.

0
Protector one

Une erreur de serveur interne 500 peut survenir pour plusieurs raisons. La première raison peut être que le fichier web.config n'est pas créé correctement, ce qui signifie que vous avez oublié une balise dans le fichier web.config. Deuxièmement, cette erreur peut être due à un problème de code. Pour vérifier quel composant de l'application Web est à l'origine de cette erreur, vous pouvez vérifier le paramètre Application dans le fichier web.config. Le détail de la résolution et du suivi des erreurs de serveur interne 500 avec diagramme est donné ici:

0
Manish

Si vous utilisez IIS 8.5, il se peut que vous deviez modifier le paramètre ID ApplicationPool de ApplicationPoolId en NetworkService

Cliquez avec le bouton droit de la souris sur le pool d’applications en question, cliquez sur "Paramètres avancés", puis faites défiler jusqu’àID- il sera probablement défini sur ApplicationPoolIdentity . Cliquez sur le bouton (..) et sélectionnez NetworkService dans la liste déroulante.

Assurez-vous également que s'il s'agit d'une application .NET 2.0, vous ne faites pas référence à la structure 4.0 de votre pool d'applications.

0
Steve Woods

Parfois, la raison peut être que l'un de vos assemblys .dll n'est pas inscrit correctement sur le serveur.

Par exemple, vous pouvez exécuter avec succès une application Web Excel C # sur votre ordinateur local sur lequel Office est installé, tout en obtenant l'erreur 500 lors du déploiement du serveur, car aucune suite Office n'est installée sur le serveur. Vous obtenez donc l'erreur du serveur.

0
user3745869