Жизненный цикл страницы немного отличается в Async Postbacks - вы уверены, что Page_OnError
запускается? Если да, то, возможно, событие сработало так поздно, что диспетчер сценариев уже отобразил в выводе зарегистрированные сценарии.
Возможно, вам следует попробовать событие ScriptManager.AsyncPostBackError . Если все, что вы хотите сделать, это показать пользовательское предупреждение об ошибке, тогда настройка ScriptManager.AsyncPostBackErrorMessage должна помочь.
Обычно я использую ScriptManager
на главной странице и обрабатывает событие AsyncPostBackError
в коде, чтобы отправить назад какое-то пользовательское исключение. На стороне java-скрипта я использую обработчик конца запроса, чтобы показать настраиваемое окно предупреждения. Проверьте пример кода сверху по ссылке MSDN:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
if (args.get_error() != undefined && args.get_error().httpStatusCode == '500')
{
var errorMessage = args.get_error().message
args.set_errorHandled(true);
ToggleAlertDiv('visible');
$get(messageElem).innerHTML = '"' +
errorMessage + '" ' + errorMessageAdditional;
}
}