Je reçois une erreur chaque fois que je télécharge mon application Web chez le fournisseur. En raison du mode customErrors, tout ce que je vois est le message par défaut "Erreur d'exécution", me demandant de désactiver customErrors pour afficher davantage d'informations sur l'erreur.
Exaspéré, j'ai configuré mon web.config comme suit:
<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
et pourtant, tout ce que j’ai, c’est la stupide page d’erreurs distantes sans aucune information utile à ce sujet .
Cela m'a rendu fou ces derniers jours et je ne pouvais pas le contourner mais j'ai finalement compris:
Dans mon fichier machine.config, j'avais une entrée sous <system.web>
:
<deployment retail="true" />
Cela semble remplacer tous les autres paramètres customError spécifiés dans un fichier web.config. Par conséquent, définissez l'entrée ci-dessus sur:
<deployment retail="false" />
signifie maintenant que je peux à nouveau voir les messages d'erreur détaillés dont j'ai besoin.
Le machine.config
est situé à
32 bits
%windir%\Microsoft.NET\Framework\[version]\config\machine.config
64 bits
%windir%\Microsoft.NET\Framework64\[version]\config\machine.config
J'espère que cela aidera quelqu'un et économisera quelques heures d'arracher les cheveux.
"Off" est sensible à la casse.
Vérifiez si le "O" est en majuscule dans votre fichier web.config, je l'ai déjà subi plusieurs fois (aussi simple que cela puisse paraître)
Dans l’intérêt d’ajouter plus de situations à cette question (car c’est là que j’ai regardé parce que j’avais exactement le même problème), voici ma réponse:
Dans mon cas, j’ai coupé/collé le texte de l’erreur générique disant en effet si vous voulez voir ce qui ne va pas, mettez
<system.web>
<customErrors mode="Off"/>
</system.web>
Donc, cela aurait dû le réparer, mais bien sûr que non! Mon problème était qu’il y avait un noeud <system.web> plusieurs lignes plus haut (avant un noeud de compilation et d’authentification) et une balise de fermeture </system.web> quelques lignes plus bas. Une fois que j'ai corrigé cela, OK, le problème est résolu. Ce que j'aurais dû faire est de copier/coller uniquement cette ligne:
<customErrors mode="Off"/>
Cela provient des annales de Stupid Things que je fais encore et encore, dans le chapitre intitulé "Copiez et collez votre façon de détruire".
Pour les applications Sharepoint 2010, vous devez également modifier C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\web.config
et définir <customErrors mode="Off" />
.
La seule réponse qui a réellement fonctionné pour résoudre ce problème que j'ai trouvé ici: https://stackoverflow.com/a/18938991/550975
Ajoutez simplement ceci à votre web.config
:
<configuration>
<system.webServer>
<httpErrors existingResponse="PassThrough"/>
</system.webServer>
<configuration>
Vous pouvez généralement trouver plus d'informations sur l'erreur dans l'afficheur d'événements, si vous y avez accès. Votre fournisseur peut également avoir empêché l'affichage des erreurs personnalisées, en les remplaçant dans leur machine.config ou en définissant l'attribut retail sur true ( http://msdn.Microsoft.com/en-us/library/ ms228298 (VS.80) .aspx ).
J'ai essayé la plupart des choses décrites ici. J'utilisais VWD et le fichier web.config par défaut contenait:
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
J'ai changé de mode = "RemoteOnly" en mode = "Off". Toujours pas de joie . J'ai ensuite utilisé le gestionnaire IIS, les propriétés, l’onglet ASP.Net, la configuration modifiée, puis l’onglet CustomeErrors. Cela a encore montré à distance. J'ai changé ceci en Off et finalement j'ai pu voir les messages d'erreur détaillés.
Quand j'ai inspecté le web.config, j'ai constaté qu'il y avait deux nœuds CustomErrors dans le system.web; et je viens de remarquer que la deuxième entrée (celle que je changeais était dans un commentaire). Essayez donc de ne pas utiliser le bloc-notes pour inspecter web.config sur un serveur distant.
Cependant, si vous utilisez la configuration IIS edit, il se plaindra des erreurs dans le fichier web.config. Ensuite, vous pouvez exclure toutes les réponses indiquant "Existe-t-il une erreur de syntaxe XML dans votre Web.config"?
Si vous obtenez toujours cette page, il est probable qu'elle explose avant de dépasser Web.Config
Assurez-vous qu’ASP.Net dispose des autorisations nécessaires pour des éléments tels que les dossiers .Net Framework, la métabase IIS, etc. Avez-vous un moyen de vérifier que ASP.Net est correctement installé et associé à IIS correctement?
Edit: Après le commentaire de Greg, je me suis dit que ce que vous avez posté est votre web.config très minimal, y at-il autre chose? Si c'est le cas, pouvez-vous publier l'intégralité de web.config?
Mon problème était que j'avais ceci défini dans mon 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>
J'ai également eu ce problème, mais en utilisant Apache et mod_mono. Pour quiconque dans cette situation, vous devez redémarrer Apache après avoir modifié web.config pour forcer la lecture de la nouvelle version.
En fait, lors de l'hébergement de mon application Web, j'ai découvert que le code que vous avez développé sur votre machine locale est d'une version supérieure à celle proposée par la société d'hébergement. Si vous avez des privilèges d’administrateur, vous pourrez peut-être modifier la prise en charge de la version de Microsoft ASP.NET dans les paramètres d’hébergement Web.
Nous avons également rencontré cette erreur. Dans notre cas, c'était parce que l'utilisateur du pool d'applications ne disposait plus d'autorisations sur le fichier web.config. La raison pour laquelle il a perdu ses autorisations (tout allait bien avant) était parce que nous avions une sauvegarde du site dans un fichier rar et que je glissais une version de sauvegarde du fichier web.config du fichier rar dans le site. Cela semble avoir supprimé toutes les autorisations du fichier web.config sauf pour moi, l'utilisateur connecté.
Nous avons mis du temps à comprendre cela, car je vérifiais à plusieurs reprises les autorisations au niveau du dossier, mais jamais au niveau du fichier.
Nous avons eu ce problème et cela était dû au fait que l'utilisateur IIS n'avait pas accès à la configuration de la machine sur le serveur Web.
Si vous utilisez l'aperçu MVC 4, cela peut être dû au fait que vous utilisez HandleErrorAttribute. Le comportement a changé dans 5 de sorte qu'il ne gère pas les exceptions si vous désactivez les erreurs personnalisées.
Je viens de traiter d'un problème similaire. Dans mon cas, la version par défaut du site asp.net était 1.1 alors que je tentais de démarrer une application Web 2.0. L'erreur était plutôt anodine, mais il était difficile de comprendre pourquoi les erreurs personnalisées ne disparaissaient pas et le moteur d'exécution n'a jamais écrit dans le journal des événements. La solution évidente consistait à faire correspondre la version de l'onglet Asp.Net d'IIS.
Essayez de redémarrer l'application (en créant un app_offline.htm puis en le supprimant) et si vous recevez toujours le même message d'erreur, assurez-vous que vous n'avez déclaré une fois customErrors dans le fichier web.config, ou quelque chose du genre. Des erreurs dans le fichier web.config peuvent avoir un impact étrange sur l'application.
Avez-vous un caractère spécial comme æøå dans votre web.config? Si c'est le cas, assurez-vous que l'encodage est défini sur utf-8.
Vous pouvez également essayer d’afficher le site Web dans un navigateur sur le serveur. Je ne fais pas beaucoup de développement ASP.NET, mais je me souviens du fait que les erreurs personnalisées comportent un paramètre permettant d'afficher uniquement le texte d'erreur complet sur le serveur, par mesure de sécurité.
J'ai eu le même problème, mais j'ai trouvé une solution différente.
-
Ce que j'ai fait, c’est que j’ai ouvert Paramètres avancés pour le Pool d’applications dans IIS Manager .
Là, je mets Activer les applications 32 bits à True .
Cette application Web est-elle définie sous d'autres applications dans l'arborescence d'un site Web? Recherchez dans les fichiers web.config parent d’autres paramètres, le cas échéant. Assurez-vous également que votre répertoire est défini en tant que répertoire d'application dans IIS.
C'est vraiment étrange. J'ai eu cette erreur et après le redémarrage de mon serveur, il a disparu.
J'ai eu le même problème et la cause en était que IIS exécutait ASP.NET 1.1 et que le site nécessitait .NET 2.0.
Le message d'erreur n'a fait que me mettre hors de propos pendant plusieurs heures.
Après avoir essayé toutes les réponses ici, il s’est avéré que ma méthode Application_Error
avait ceci:
Server.ClearError();
Response.Redirect("/Home/Error");
La suppression de ces lignes et le réglage ont résolu le problème. (Le client a quand même été redirigé vers la page d'erreur avec customErrors="On"
).
Pour moi, c'était une erreur plus haut dans le fichier web.config au-dessus du fichier system.web.
le fichier bla n'existait pas, il a donc lancé une erreur à ce moment-là. Comme la section System.Web n’était pas encore disponible, il utilisait le paramètre par défaut du serveur pour CUstomErrors (On).
Assurez-vous d’ajouter juste après le system.web
Je l'ai mis vers la fin du nœud et n'a pas fonctionné.
Si vous effectuez une transformation de configuration, vous devrez peut-être également supprimer la ligne suivante du fichier web.config approprié.
<compilation xdt:Transform="RemoveAttributes(debug)" />
Assurez-vous également que vous éditez web.config et non website.config, comme je le faisais.
J'ai eu le même problème et j'ai parcouru le journal de l'application Event Viewer où il est clairement indiqué en raison de l'exception à laquelle cela s'est produit. Dans mon cas, l'exception était comme ci-dessous ...
Information d'exception:
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.
Je viens de mettre à jour mon mot de passe dans le pool d'applications et cela fonctionne pour moi.
Il est également possible que web.config ne soit pas correctement formaté. Dans ce cas, vous devez le parcourir ligne par ligne avant de pouvoir travailler. Les règles de réécriture sont souvent les coupables.