Показать дружеское сообщение об ошибке ASP.NET Ajax - PullRequest
0 голосов
/ 07 января 2011

Вы все знаете как раздражает это:

alt text

У меня есть система журналов, и правильная ошибка там явно указана, но я хочу дать пользователю лучшее сообщение.

Я продолжаю пробовать несколько способов, но я использую компоненты Telerik и хорошо jQuery, и я в конечном итоге использовал как ASP.NET Ajax-методы, так и jQuery, поэтому я использую

function pageLoad() {

    try {
        var manager = Sys.WebForms.PageRequestManager.getInstance();
        manager.add_endRequest(endRequest);
        manager.add_beginRequest(OnBeginRequest);
        manager
    }
    catch (err) {
        alert(err);
    }
}

а

$(document).ready(function() { ... }

что alert(err) никогда не срабатывает даже при OnClick событиях

Каков наилучший способ избежать ошибок в этом сообщении и обеспечить более чистый способ?

все это происходит в <asp:UpdatePanel>, поскольку я использую это, когда я не знал лучше (3 года назад!), И я действительно не хочу портить и строить все заново с нуля: (

Любая помощь очень ценится


Обновлено с большим количеством окон ошибок после volpav решение

alt text

alt text

Ответы [ 4 ]

0 голосов
/ 30 июля 2013

Скотт объясняет точно, что в сообщении в блоге, поэтому вместо того, чтобы угнать это сообщение, проверьте это.

Я использовал его метод вместе с jQuery и плагином Noty, и уведомления выглядели намного лучше.

Пост Скотта: http://weblogs.asp.net/davidbarkol/archive/2008/09/25/asynchronous-error-handling-change-in-asp-net-ajax-3-5.aspx

Плагин jQuery Noty: http://needim.github.io/noty/

0 голосов
/ 07 января 2011

Ошибка, которую вы видите, не может быть легко устранена на стороне клиента.Так как PageRequestManager не может проанализировать ответ, вы не дошли до того, что сможете обработать endRequest и set_errorHandled ().

Что вам говорит о том, что что-то искажает ответ на асинхронный ответ вашей UpdatePanelпостбэк.Я уже писал об одной распространенной причине этого: http://encosia.com/2007/06/19/the-easiest-way-to-break-aspnet-ajax-pages/

Как говорится в сообщении об ошибке, другой распространенной причиной являются пользовательские модули HttpModules, которые внедряют разметку.GoDaddy использует (или использовал) один для вставки рекламы в бесплатные учетные записи хостинга, которые, например, сломали UpdatePanel.

Если вы проверяете ответ в чем-то вроде Firebug или Fiddler, должно быть очевидно, что это за чужой контентявляется.Мне трудно рассуждать о том, что именно это может быть, не зная больше о вашем заявлении.

0 голосов
/ 08 января 2011

Вы можете использовать событие ScriptManager AsynPostBackError для пользовательской обработки ошибок.

0 голосов
/ 07 января 2011

Если я вас правильно понял:

var manager = Sys.WebForms.PageRequestManager.getInstance();
manager.add_endRequest(function(sender, args) {
    var error = args.get_error();
    if(error != null && error.httpStatusCode != null) {
        // handle error
        args.set_errorHandled(true);

    }    
});

- Павел

...