web-dev-qa-db-ja.com

Web.configカスタムエラーモードの競合

Web.Configに重大で重要な問題があります。ページのエラーを確認し、asp.net WebフォームとWeb構成で解決する必要がありますが、エラーが発生すると別のエラーが表示され、次のメッセージが表示されます。

customErrorsモードをOffまたはOnまたはRemoteOnly、

このプロパティをOffに設定しましたが、エラーを表示せずに、CustomErrorをOnに属性を設定してください。

enter image description here

enter image description here

モードをオンに設定すると、customErrorsモードを再度オンに設定してください。

enter image description here

enter image description here

20
Saeed

構成に問題がある場合は、設定が上書きされないようにしてください。

この場合、サーバーには構成<deployment retail="true" />アプリケーション設定を上書きし、トレース出力、カスタムエラー、およびデバッグ機能を無効にします。

値を「false」に変更します

<deployment retail="false" />

MSDNリンク

16
Ajeesh M

まず、CustomErrorsモードを「RemoteOnly」から「off」に設定できます<customErrors mode="Off"></customErrors>

次に、global.asaxを確認できます。カスタムエラーのdefaultRedirectと同じようにResponse.Redirectを作成できます。詳細はこちらで確認できます ASP.NET customErrors with mode = remoteOnly and global.asax handling exceptions

そして最後に、おそらくwebconfigでtwosystem.webを作成します。 configファイルには1つだけが必要です。webconfigをもう一度確認してください。 <compilation debug="true"/>

4
rolandAkbar

次のように、<system.web>タグ内のどこかにcustomErrorsタグをネストしてください。

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

あなたの説明から、それはすでにあなたによってそこに置かれたか、別の方法で自動的に生成された可能性が高いです。また、オンに設定して、アプリケーションプールを再起動してください。これを行うには、ブレークリターンを追加してweb.configファイルを変更するか、スペースキーを押すだけで、変更を加えます。ここで、customErrorsモードがOnに設定されているので、これが2回目であることを確認して再アップロードします。これで、カスタムエラーページを表示できるようになりました。

それでも問題が解決せず、IIS ManagerからWebサイトにアクセスできる場合は、[機能]ビューで.NETエラーページを編集してください。これも同じことを行い、カスタムエラーページを提供しますweb.configファイルがアクセスするための正しいディレクトリにあります。

4
Oddacon

デバッグ用のエラーを表示し、カスタムエラーページを表示しないようにするには、defaultRedirectは必要ありません。これを使用するだけで、デバッグ/例外情報を出力できます。

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

注:Onが大文字の[〜#〜] o [〜#〜]で始まることを確認してください。 web.configを変更することにより、これは(デフォルトで)アプリプールをリサイクルし、すぐに取得されるはずです。

3
Belogix

カスタムページに例外を表示するサンプルコードを次に示します。

最初にボタンを使用してDefault.aspxを作成します。

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

ボタンクリックイベントに次のコードを追加します。

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

次に、ラベル付きのErrorPage.aspxを作成します。

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

エラーページのコード:

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

最後に、web.configに次の構成を配置します。

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

Default.aspxでコンパイルして開始します。ボタンをクリックすると、カスタムページにエラーが表示されます。

ハッピーコーディング!

3
Gregor Primar

オンに設定されていると表示されることはありません。 customeErrorsをoffに設定すると、詳細なエラーが表示されます。オフに設定し、この投稿に表示される実際のエラーメッセージを追加します。 404エラーのような別のメッセージが表示されないことを確信していますか?

1
csaam

ここでコメントしたかったのですが、コメントするのに十分なポイントがありません。エラーを生成する実際のページとweb.config全体を確認できますか?接続文字列などをぼかして、パスワードを漏らさないようにすることができます。

しかし、私が見るものでは、

あなたが言っていることから、あなたはIISローカルマシン上で高速デバッグを使用していると思います。サイトがキャッシュされていないかどうかを確認するために、IIS Expressまたはctrl + F5ページを実行しました。

カスタムエラーをオフに設定すると、デバッグメッセージが表示されます。オフの「O」は、fの小文字で大文字にする必要があります。あなたはこれを持っているように見えますが、言及する価値があります

カスタムエラーオフ-カスタムエラーを無効にすることを指定します。これにより、詳細なエラーを表示できます。

1

私が見ることができるものから、あなたは<customErrors mode="Off" />ノードの最初のノードとして<system.web>を持っていません。

推測すると、<compilation targetFramework="x.x">ノード内にcustomErrorsノードがあります。

おそらく、アプリケーションプールは、アプリケーションが記述されている.NETフレームワークの別のバージョンに設定されています。<customErrors mode="Off" />ノードが<system.web>ノード内で最初であることを確認してください詳細なエラーメッセージ。

1
Stephen

この行を削除するとうまくいきます!

<customError  />
1
Milad

多くのホスティング会社は、実際にはweb.configファイルの設定を会社によってオーバーライドしています。通常、これらの具体的な属性は、WebサイトのWebホストのダッシュボードで設定できます。

使用している具体的なWebホスティングを教えていただければ、具体的な手順をより適切に支援できるはずです。

1
Martin Zikmund