1

Я посмотрел на это довольно широко, и я нашел следующее:верхнего уровня для (визуальных) веб-части

  1. Вы можете сделать некоторые умные вещи, чтобы поймать большинство ошибок пути внедрения базы класс, см. решение Андреаса Кнудсена для этого.
  2. Событие Ошибки в UserControl никогда не увольняет, деталь здесь: http://weblogs.asp.net/vga/archive/2003/06/16/8748.aspx

То, что я не могу найти какой-либо общий способ поймать ошибки, возникающие в обратной передаче событий, такие как событие щелчка по кнопке, на уровне веб-части или пользователя. Что я имею в виду под общим - это то, что я могу реализовать в базовом классе.

Я знаю, что я должен делать правильную попытку/уловку в своем коде, но для больших команд я бы хотел убедиться, что веб-часть никогда не сбой страницы, но всегда показывает хорошее сообщение и позволяет выполнить для других веб-частей на странице.

Я не думаю, что это возможно, но я бы love будет доказано неверно.

Спасибо, Бьорна

ответ

0

Я думаю это возможно, но вы должны работать вокруг того, что когда asp.net распределяет события обратной передачи не могло заботиться меньше о ваших определений управления пользователем , вместо этого он заботится только об элементах управления, которые явно реализуют IPostBackEventHandler (например, кнопка/выпадающее меню и т. д.)

Для страниц вы можете переопределить и попробовать/поймать RaisedPostBackEvent, как и для других методов. (если вы когда-либо хотели создать общую обработку обработки исключений страниц (если вы этого хотите, пожалуйста, передумайте). Я потратил слишком много времени в своем последнем проекте, в основном переопределяя логику обработки исключений по умолчанию asp.net, чтобы заставить это работать. devil's in the details)

Что вы можете сделать, это иметь базовую страницу в вашей системе, на которой все страницы наследуются и которая переопределяет RaisePostBackEvent (source, eventArgs). В этом методе вы можете увидеть, наследует ли источник от вашего исключения управляющий базовый элемент управления, или если он содержится внутри элемента управления, который делает это. (перемещайтесь по родительскому графу) Если он содержится одним, тогда попробуйте/поймайте вызов на base.Raise .... (см. код в Transparent generic exception handling for asp.net/MOSS2007 (with code)) и вызовите метод исключенного из первого кандидата, который вы нашли, если действительно какой-либо из появляются события.

+0

Спасибо за ответ. Это интересная идея, но, к сожалению, у меня нет времени на то, чтобы попробовать (давление в проекте). Я когда-нибудь, хотя это было бы очень здорово, если бы это сработало. – Bjoern

+0

Я дам вам пользу от сомнений :) – Bjoern

 Смежные вопросы

  • Нет связанных вопросов^_^