web-dev-qa-db-ja.com

ASP.NET / Web.config:customErrorsは404でのみリダイレクトします

私はこのシナリオを持っています:

ユーザーが私のサイトにアクセスしてリンクをたどりますが、もう存在しません。カスタムエラーページにリダイレクトする必要があります。 (それは動作します)

ユーザーがエラーをスローする何かをした場合、スタックトレースと実際のエラーページが表示されます。

これは私の現在のWeb.configです。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <customErrors>
          <error statusCode="404" redirect="/errors/404.htm" />
        </customErrors>
        <compilation debug="true" strict="false" explicit="true" />
    </system.web>
</configuration>

この構成では、404は適切なサイトにリダイレクトされますが、HTTP500は次のように表示されます。

'/'アプリケーションのサーバーエラー

説明:サーバーでアプリケーションエラーが発生しました。このアプリケーションの現在のカスタムエラー設定では、アプリケーションエラーの詳細をリモートで表示できません(セキュリティ上の理由から)。ただし、ローカルサーバーマシンで実行されているブラウザで表示することはできます。

詳細:この特定のエラーメッセージの詳細をリモートマシンで表示できるようにするには、現在のWebアプリケーションのルートディレクトリにある「web [.config」構成ファイル内にタグを作成してください。このタグでは、「mode」属性を「Off」に設定する必要があります。

[...]

しかし、この場合、スタックトレースを表示したいと思います。

これどうやってするの?

注: LinuxではMono <-FastCGI-> Lighttpd構造を使用しています。

9
Lyra

Ray Van Halens Answerは正しいですが、これは実際の問題ではありませんでした。

スタックトレースが表示されない理由は、mono自体のバグです。スタックトレースが支払われる独自のエラーページを作成する方法は他にありません。

0
Lyra

次のweb.configエントリでは、見つからない(404)条件により、ユーザーがPageNotFound.aspxに送信されます。

Mode = "Off"を使用すると、すべてのユーザー(ローカルユーザーとリモートユーザー)にエラーの詳細が表示されます。

<customErrors mode="Off">
     <error statusCode="404" redirect="~/errorPages/PageNotFound.aspx" />
</customErrors>

Mode = "RemoteOnly"を使用すると、ローカルユーザーにスタックトレースとコンパイルの詳細を含む詳細なエラーページが表示されます。 GeneralError.aspxページが表示されるリモートユーザー

<customErrors mode="RemoteOnly" defaultRedirect="~/errorPages/GeneralError.aspx">
     <error statusCode="404" redirect="~/errorPages/PageNotFound.aspx" />
</customErrors>
21
Ray Van Halen