私のアプリケーションでASP.NETカスタムエラーページを使用しています。 customErrorsタグのweb.configファイルのエントリがServer.ClearError()ページリフレッシュ
<customErrors mode="On" defaultRedirect="Error.aspx" redirectMode="ResponseRewrite" />
は、以下の
され、次の「EX」はNULLでない場合Error.aspxページprotected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
Exception ex = Server.GetLastError();
if(ex != null)
{
CommonUtils.SendException(ex.Message.ToString(), ex.StackTrace.ToString());
Server.ClearError();
}
}
}
上のコードスニペットで、コードが例外電子メールを送信します。これは正常に動作します。
電子メールを送信した後、ユーザーが更新ボタンを押した場合に電子メールが送信されないように、すべてのエラーをクリアします。しかし、Server.ClearErrorを使用した後でさえ、Server.GetLastError()によって値が返され、ページがポストバックされます。
なぜGlobal.asaxの 'ApplicationError()'メソッドでこれを保持し、server.transfer()を使ってエラーページに移動しますか? – Webruster