エラーログにELMAHを使用しています。エラーが部分的なポストバック(更新パネルにラップされたコントロールのイベントハンドラから)で発生した場合は、エラーを2回記録しています。私は "MsAjaxDeltaErrorLog"モジュールを使用していませんが、代わりにScriptManagerコントロールの "AsyncPostBackError"イベントハンドラからエラーをプログラムでログに記録します。私は部分的なポストバック中に発生したエラーのために汎用ページへのリダイレクトを避けるためにこれをやっています。 web.configでリダイレクトを無効にしました。ここでELMAHのウェブサイトから、例外ELMAHによって2回ログされたAjaxエラー
protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
HttpContext.Current.Items["AjaxError"] = "Ajax";
ErrorSignal.FromCurrentContext().Raise(e.Exception,HttpContext.Current);
}
and in Global.asax, I am redirecting manually
protected void ErrorLog_Logged(object sender, ErrorLoggedEventArgs e)
{
if (!HttpContext.Current.Items.Contains("AjaxError"))
{
var pageName = e.Entry.Error.StatusCode == 404 ? "FileNotFoundPage" : "GenericErrorPage";
var redirectPage = ConfigurationManager.AppSettings[pageName];
Response.Redirect(String.Format("{0}?ExceptionId={1}&ExceptionMessage={2}", redirectPage, Server.UrlEncode(e.Entry.Id),
Server.UrlEncode(e.Entry.Error.Message)));
}
}