Не удается отловить ошибку при обратной передаче в асинхронном режиме (страница asp.net с панелью обновления) - PullRequest
1 голос
/ 05 февраля 2010

Я использую панель обновления и регистрирую обработчик для endRequest для отлова ошибок:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

На сервере выдается исключение для проверки клиентской стороны. Проблема в том, что в IE и FireFox EndRequestHandler никогда не вызывается! Он работает как положено в Opera и Safari.

На простой странице с несколькими элементами управления она работает, как и ожидалось, во всех браузерах. Что я обнаружил с помощью Firebug, так это то, что ответ Content-length: 67, но ответа нет (пустая вкладка для ответа)! Ожидаемый ответ

53 | error | 500 | Ссылка на объект не установлена ​​на экземпляр объекта. |

например.

Я не отладил библиотеку ajax точно, но я видел, что какой-то код запускается для подготовки к событию pageLoading (возможно, потому что он не может обнаружить ошибку?), Но нет информации для панелей обновления из ответа и ошибки происходит при попытке использовать объект для панелей обновления, который является нулевым. Ошибка перехватывается блоком try-finally.

Итак, на сервере (на странице asp.net) может быть что-то, что вызывает проблему, но я не смог ее найти. Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2010

Та же проблема все еще существует с последним MS Ajax.

Мне удалось решить проблему на сервере:

protected override void OnError(EventArgs e)
{
    base.OnError(e);
    if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
    {
        Response.Clear();
        Response.Write("53|error|500|Bad.|");
        Response.Flush();
    }
}

Таким образом, я думаю, что на стороне сервера что-то не так.

0 голосов
/ 05 февраля 2010
  1. Пустая вкладка для ответа - ошибка Firebug. Я тоже столкнулся с этим.
  2. Попробуйте обновить до последней версии MS Ajax: http://ajax.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35895
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...