2010-11-02 2 views
0

(Я фактически использую Ektron CMS и использую Widgets, которые являются очень простым расширением пользовательского элемента управления).Ловля необработанных исключений в веб-управлении, чтобы страница отображалась

Проблема: У меня есть веб-страница, содержащая множество виджетов. Если в одном из этих виджетов возникает исключение, страница останавливается, и пользователю предоставляется ошибка сервера. Я хотел бы иметь необработанные исключения в виджетах для регистрации исключения, прекратить отображение этого виджета и разрешить продолжение страницы.

E.g. У вас есть виджет погоды на каждой странице, которая получает данные через веб-службу. Если веб-служба отправляет вам неправильный XML, вы хотите, чтобы сайт по-прежнему был доступен.

Возможные решения:
План A) Внутри каждого виджета, заверните содержимое инициализации или отображения функции в Try-Catch заявления.
Plan B) Создайте новый интерфейс IRobustWidget, который расширяет IWidget и выполняет Try-Catch.

Оба эти параметра кажутся мне немного «грязными», поскольку я читал, что общие операторы catch (exception) являются немного анти-шаблонами. Я склоняюсь к Плану Б, поскольку это кажется более модульным.

  • Я пропустил какие-либо другие варианты?
  • Является ли общий Try-Catch ok в этом отношении?


(I've also logged this at the Ektron forums)

ответ

2

Тот факт, что вы загружаете данные с помощью веб-сервиса заставляет меня задаться вопросом, стоит ли возможно загрузить этот асинхр данных, с помощью либо Аякс загруженного <div>, или ; то есть виджеты (ы) загружаются (отдельные) в отдельные запросы. Это получает Вас два преимущества:

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

Недостаток - это дополнительное путешествие в оба конца, но, по сравнению со всем, что происходит, это не обязательно создает проблему.

+0

Спасибо, я не считал это. Это соответствует моему решению сделать сами элементы управления более ответственными за обработку ошибок. Я отхожу от попытки показать страницу «независимо от того, что», поскольку на данном этапе в нашем проекте это слишком много усилий. – Spongeboy

0

Я нашел то, что я был после- Catching unhandled exceptions in ASP.NET UserControls

Я также понимаю, что мне нужно решить, какое событие мне нужно сосредоточиться на (Рендер, загрузка или пользовательскую функцию SetDisplay)

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