Déploiement du site Web: 500 - Erreur de serveur interne

189

J'essaye de déployer une application ASP.NET. J'ai déployé le site sur IIS, mais lorsque je le visite avec le navigateur, cela me montre ceci:

erreur du serveur

500 - Erreur de serveur interne.

Il y a un problème avec la ressource que vous recherchez et elle ne peut pas être affichée.

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

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?

Jacob Jedryszek
la source
1
Assurez-vous que le mappage des caractères génériques est en place pour l'application MVC sur le répertoire ...
sajoshi

Réponses:

298

Tout d'abord, vous devez activer et afficher 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 vrai problème 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 l'affiche. Ou 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 Debug = true . Il vous suffit de fermer les erreurs personnalisées pendant un certain temps et d'obtenir la page d'erreur détaillée.

Référence: Activation de la messagerie d'erreur personnalisée Windows dans les articles d'aide de Go Daddy .

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

Aristos
la source
9
Merci pour le post! La partie qui l'a fait pour moi était: <httpErrors errorMode = "Detailed" />
jaseeey
@codemonkeyliketab Doit être le même ... ou similaire ... si vous exécutez iis express sur votre ordinateur, ouvrez votre EventViewer ...
Aristos
4
run the browser on the servertravaillé pour moi .. merci frère
Rajshekar Reddy
1
@Apprendre oui, vous n'activez l'erreur détaillée que pendant une courte période de temps pour pouvoir trouver certaines de vos erreurs et faire fonctionner votre application - puis vous la fermez
Aristos
1
Merci, l'activation des messages d'erreur détaillés d'IIS a aidé.
Vadim Tofan
25

Je tirais mes cheveux sur ce problème. S'assurer que l'entrée suivante était dans le web.configfichier racine l'a corrigé pour moi:

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

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

Joshua Frank
la source
9

Pour moi, le code suivant dans le web.config était le coupable. Lorsque je l'ai supprimé, le site Web fonctionnait bien.

  <staticContent>
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  </staticContent>
user3638709
la source
1
Merci.
panky sharma
9

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

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

J'ai essayé toutes les options mentionnées dans divers forums. 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 m'être cogné la tête pendant deux jours. J'ai décidé de supprimer toutes les références de fichiers DLL et de supprimer web.cofig (faire une copie locale) du projet et de laisser l'application lancer l'erreur, puis d'ajouter les fichiers DLL un par un en faisant une copie dans local = true.

Une fois que tous les fichiers DLL ont été ajoutés, j'ai créé une nouvelle application ASP.NET MVC et copié le web.config de la nouvelle application dans mon application réelle. Donc, mon application actuelle a maintenant un nouveau web.config, puis j'ai copié la chaîne de connexion et d'autres références à partir de la copie locale de web.config que j'ai enregistrée.

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

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

Manish Kumar
la source
Mon erreur résolue par: stackoverflow.com/questions/11359957 /... J'ai également dû installer Elmah
Par G
7

Dans mon cas, j'ai mis une erreur dans mon web.configdossier. La clé d'application a en quelque sorte é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 étudier le problème.

Van Thi
la source
Juste eu la même chose ici. web.config a été copié par erreur dans un sous-répertoire et a causé une erreur weired bien que j'aie réglé le paramètre "afficher les erreurs détaillées" sur true.
Avni Yayin
7

Ma première tentative de publier puis d'exécuter un site très simple ne servant que du HTML a produit "La page ne peut pas être affichée car une erreur de serveur interne s'est produite."

Le problème: j'avais le site défini sur .NET 3.5 dans Visual Studio (clic droit sur le projet de site Web -> Pages de propriétés -> Générer), mais le site Web dans Azure était configuré en tant que .NET 4.0. Oups! Je l'ai changé en 3,5 dans Azure et cela a fonctionné.

kenswdev
la source
5

En plus des autres suggestions, assurez-vous de changer l' existingResponseattribut du httpErrorsnœud en Autofrom Replaceou de supprimer complètement cette propriété.

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

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

lapsus
la source
3

Erreur serveur 500 - Erreur de serveur interne. Il y a un problème avec la ressource que vous recherchez et elle ne peut pas être affichée. 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.

ThanGio
la source
3

Pour IIS 8, il y a une étape supplémentaire à faire autre que la modification de customErrors = Off pour afficher le contenu de l'erreur.

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

Raul a répondu à la question dans ce lien Désactiver les erreurs personnalisées IIS8 par Raul

Michelle
la source
vous avez manqué la clôture / après "Détaillé"
manuel-84
Cette solution était ce qui était nécessaire pour IIS 10.0.14393.0.
Marcus Parsons
2

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

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

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

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

marque kasina
la source
Cette réponse n'est-elle pas fondamentalement la même que celle de juillet 2014 ?
Wai Ha Lee
1

Erreur interne 500 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. Utilisez toujours dans cet hébergement cela fonctionne.

Je vous recommanderai également à tous de faire les modifications que vous souhaitez apporter à votre fichier web.config. Veuillez le faire un par un et tester le même sur le domaine en direct afin que vous puissiez 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>
Tushar Tyagi
la source
dans mon cas, l'erreur a été causée par <httpRuntime enableVersionHeader = "false" /> dans web.config
b3wii
1

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

Vous pouvez demander à votre gestionnaire de lancer le réel HttpExceptions(qui a une Messagepropriété utile ) pendant le 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 les exceptions InnerException.

Protecteur un
la source
1

Une erreur de serveur interne 500 peut survenir pour plusieurs raisons. La première raison pourrait être que le fichier web.config n'est pas correctement créé, cela signifie que vous avez manqué 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 de l'application dans le fichier web.config. Le détail de la résolution et du traçage de l'erreur de serveur interne 500 avec diagramme est donné ici:

Manish
la source
Cet enregistrement de domaine a expiré le 15/06/2018.
Patricia
Le lien sert maintenant des logiciels malveillants. J'ai supprimé le lien
Liam
0

Assurez-vous que votre compte utilise IIS 7. Pour plus d'informations, consultez 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 compte d'hébergement Windows IIS 7. Sélectionnez Mode pipeline intégré. Dans la section Références de projet, définissez Copier 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.
Kurkula
la source
0

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

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

user3745869
la source
0

Pour ceux qui ont cette possibilité (hébergement VPS et non 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 à quiconque.

Tomas Kubes
la source
0

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

Cliquez avec le bouton droit 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 à la place.

Assurez-vous également que s'il s'agit d'une application .NET 2.0, vous ne référencez pas l'infrastructure 4.0 dans votre pool d'applications.

Steve Woods
la source
0

Avant de modifier le web.configfichier, je vérifierais que la .NET Frameworkversion que vous utilisez est exactement (je le pense, 4.5! = 4.5.2) la même par rapport à vos GoDaddyparamètres (paramètres ASP.Net dans votre Plesk panel). Cela devrait automatiquement changer votre fichier web.config vers le bon framework.

Notez également que pour le moment (janvier 16), GoDaddyfonctionne avec ASP.Net 3.5et 4.5.2. Pour l'utiliser 4.5.2avec Visual Studio, il doit être 2012ou plus récent, et sinon 2015, vous devez télécharger et installer le package de développement .NET Framework 4.5.2.

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

Sergio R
la source
0

J'ai récemment eu le même problème, l'espace disque était plein sur le serveur. Le fait de libérer de l'espace a résolu le problème.

Achintya
la source