0

私のweb.configにある場合:

<customErrors mode="Off" defaultRedirect="CustomErrorPage.aspx">
      <error statusCode="401" redirect="~/CustomErrorPage.aspx?statusCode=401" />
      <error statusCode="403" redirect="~/CustomErrorPage.aspx?statusCode=403" />
      <error statusCode="404" redirect="~/CustomErrorPage.aspx?statusCode=404" />
      ...
</customErrors>

CustomErrorPage.aspxで、カスタムエラーページがなく、ブラウザに出力されたときに黄色の画面のエラーページを表示するのと同じように、スタックトレース情報を取得するにはどうすればよいですか?

または、これはcustomerrorpage.aspxにリダイレクトされているため、この時点でエラーは本質的に失われ、例外情報にアクセスできませんか?

これは複雑な仮想ディレクトリなどを備えたレガシーアプリケーションであるため、この時点でこれらのエラーライブラリの1つを簡単に削除できます。

4

6 に答える 6

1

それは失われました。リダイレクトによって行われるため、同じリクエストではありません。

最後のポイントはそれ自体で十分に悪いことですが (誰かをエラー ページにリダイレクトすることに何の意味があるのでしょうか?)、ここでは影響があります。ただし、要素にredirectMode="ResponseRewrite"追加すると、customErrorsこの問題が解決され、機能することも意味しServer.GetLastError()ます。

于 2012-08-30T15:52:18.303 に答える
1

この SO 投稿 (http://stackoverflow.com/questions/343014/asp-net-custom-error-page-server-getlasterror-is-null) に従って、.Net 3.5 SP1 を実行している場合は、redirectModeプロパティを使用できますあなたのcustomErrors要素に。

redirectMode の詳細: http://msdn.microsoft.com/en-us/library/system.web.configuration.customerrorssection.redirectmode(v=vs.90).aspx

これを行うと、Server.GetLastError() からエラーにアクセスできるようになります: http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.getlasterror.aspx

編集:ResponseRewriteモードを使用することになりますredirectMode

于 2012-08-30T15:45:59.967 に答える
0

例外は失われません。Server.GetLastError()最後にスローされた例外を取得するために呼び出すことができます。

Exceptionオブジェクトを返すため、呼び出しStackTraceを取得するだけで完全なスタックトレースを取得できます。

于 2012-08-30T15:49:51.210 に答える
0

global.asax では、エラーをキャッチして保存し、エラー ページで取得できます。

Application_Errorエラーをキャッチするためにオーバーライドします。

于 2012-08-30T15:46:38.060 に答える
0

サーバー上のいくつかのファイルにエラーを記録するか (Global.asax.cs に Application_Error イベント ハンドラーを追加する必要があります)、webconfig でこの行を削除して、例外で黄色の画面を表示することができます。

于 2012-08-30T15:44:32.010 に答える
-1

GetLastErrorを使用すると、(奇妙なことに)最後に発生したエラーを取得できます。

http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.getlasterror.aspx

于 2012-08-30T15:49:54.737 に答える