web-dev-qa-db-fra.com

Conflit du mode Erreurs personnalisées Web.config

J'ai un problème important et important avec Web.Config, j'ai besoin de voir l'erreur de ma page et de la résoudre dans le formulaire Web asp.net et la configuration Web, mais quand une erreur s'est produite, je vois une autre erreur et je vois ce message:

le mode customErrors sur Off ou On ou RemoteOnly,

J'ai désactivé cette propriété, mais je n'affiche pas d'erreur et je répète, veuillez définir l'attribut sur On votre erreur personnalisée.

enter image description here

enter image description here

lorsque je mets le mode sur On, dites Veuillez mettre le mode customErrors sur On à nouveau.

enter image description here

enter image description here

20
Saeed

Lorsque vous rencontrez des problèmes de configuration, assurez-vous que vos paramètres ne sont pas remplacés.

Dans ce cas, votre serveur peut avoir une configuration <deployment retail="true" /> qui remplace les paramètres de l'application et désactive la sortie de trace, les erreurs personnalisées et les capacités de débogage.

Remplacez la valeur par "false"

<deployment retail="false" />

Lien MSDN

16
Ajeesh M

Tout d'abord, vous pouvez définir le mode CustomErrors de "RemoteOnly" sur "off" <customErrors mode="Off"></customErrors>

Deuxièmement, vous pouvez vérifier le global.asax.maybe que vous créez Response.Redirect comme identique à defaultRedirect dans customError. vous pouvez vérifier plus de détails ici ASP.NET customErrors avec mode = remoteOnly et global.asax gérant les exceptions

et le dernier, peut-être vous créez deux system.web dans votre webconfig. Vous ne devriez en avoir qu'un dans votre fichier de configuration.Veuillez vérifier à nouveau votre configuration Web. et n'oubliez pas <compilation debug="true"/>

4
rolandAkbar

Assurez-vous d'imbriquer la balise customErrors quelque part dans votre <system.web> tag comme ceci:

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

D'après votre description, il est déjà probable qu'il ait été placé là par vous ou généré automatiquement d'une autre manière. Essayez également de définir sur On et redémarrez le pool d'applications. Vous pouvez le faire en modifiant simplement web.config fichier en ajoutant un retour de pause ou même en appuyant simplement sur la touche espace, tant que vous avez apporté une modification. Maintenant, téléchargez à nouveau en vous assurant que c'est votre deuxième fois avec le mode customErrors réglé sur On. J'espère que vous pouvez maintenant afficher votre page d'erreur personnalisée.

Si vous rencontrez toujours des problèmes et avez accès à votre site Web à partir de IIS Manager, essayez de modifier les pages d'erreur .NET dans la vue Fonctionnalités. Cela fera également la même chose, en fournissant votre page d'erreur personnalisée. se trouve dans le bon répertoire pour le web.config fichier auquel accéder.

4
Oddacon

Pour afficher l'erreur de débogage et NE PAS afficher une page d'erreur personnalisée, vous n'avez pas besoin d'un defaultRedirect et simplement l'avoir devrait alors afficher les informations de débogage/exception:

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

REMARQUE: assurez-vous que On commence par un majuscule O . En modifiant le fichier web.config, cela devrait (par défaut) recycler votre pool d'applications et être récupéré immédiatement.

3
Belogix

Voici un exemple de code pour afficher les exceptions sur une page personnalisée.

Créez d'abord Default.aspx avec le bouton:

    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Throw Error" />

Ajoutez le code suivant pour l'événement de clic de bouton:

    protected void Button1_Click(object sender, EventArgs e)
    {
        throw new Exception("Sample Exception on my Page");
    }

Créez ensuite ErrorPage.aspx avec l'étiquette:

    <asp:Label ID="Label1" runat="server" Text=""></asp:Label>

Et code pour la page d'erreur:

    protected void Page_Load(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        if (ex != null && ex.InnerException != null)
        {
            Label1.Text = string.Format("An error occured: {0}", ex.InnerException.Message);
        }
    }

Et enfin, placez la configuration suivante dans web.config:

    <system.web>
      <customErrors mode="On" defaultRedirect="~/ErrorPage.aspx" redirectMode="ResponseRewrite" />
    </system.web>

Compilez et démarrez avec Default.aspx. Cliquez sur votre bouton et une erreur s'affichera sur votre page personnalisée.

Bon codage!

3
Gregor Primar

Je ne l'ai jamais vu dire réglé sur On. Je l'ai vu dire de désactiver customeErrors, ce qui vous donnera des erreurs détaillées. Désactivez-le, puis ajoutez le message d'erreur réel que vous voyez à ce message. Êtes-vous certain que vous n'obtenez pas un message différent comme une erreur 404?

1
csaam

Je voulais juste commenter ici, mais je n'ai pas assez de points pour commenter, pouvons-nous voir la page réelle qui produit l'erreur et voir l'intégralité de web.config? vous pouvez brouiller les chaînes de connexion et autres afin de ne pas donner de mots de passe.

Mais avec ce que je vois,

Je pense que d'après ce que vous dites, vous utilisez IIS Débogage express sur la machine locale. Je ferais IIS Express, ou ctrl + F5 la page pour voir si le site n'est tout simplement pas mis en cache.

si vous définissez les erreurs personnalisées sur Off, le message de débogage s'affichera. REMARQUE: le "O" dans Off doit être en majuscule avec les minuscules des f. on dirait que vous l'avez, mais mérite d'être mentionné

Erreurs personnalisées désactivées - Spécifie que les erreurs personnalisées sont désactivées. Cela permet d'afficher des erreurs détaillées.

1
Lawrence Thurman

D'après ce que je peux voir, vous n'avez pas le <customErrors mode="Off" /> comme premier nœud dans le <system.web> noeud.

Si je devais deviner, vous avez le nœud customErrors dans un <compilation targetFramework="x.x"> noeud.

Le pool d'applications est probablement défini sur une autre version du framework .NET que celle dans laquelle l'application est écrite. Assurez-vous que le <customErrors mode="Off" /> le nœud est le premier à l'intérieur du <system.web> node, il vous donnera probablement le message d'erreur détaillé.

1
Stephen

supprimer cette ligne fonctionne pour moi!

<customError  />
1
Milad

De nombreuses sociétés d'hébergement remplacent réellement les paramètres de votre fichier web.config par les leurs. Vous pouvez généralement définir ces attributs concrets dans le tableau de bord de l'hôte Web pour le site Web.

Si vous nous indiquez l'hébergement web concret que vous utilisez, nous devrions être en mesure de vous aider à mieux prendre des mesures concrètes.

1
Martin Zikmund