Будет ли ASP.NET ловить исключение, выброшенное в классе WebRole? - PullRequest
1 голос
/ 09 мая 2011

Мне показалось, что я где-то читал, что WebRole работает не так, как IIS в Windows Azure, что позволяет объединять роли Web и Worker http://things.smarx.com/#Combine%20Web%20and%20Worker%20Roles

Предполагая следующий общий код:

public class WebRole : RoleEntryPoint
{
    public override void Run()
    {
         ... Exception gets thrown here.
    }
}

Требует ли это отдельного подхода к обработке исключений?Отличается ли Run от OnStart, что означает, что определенные службы были запущены?Какие-нибудь лучшие практики?

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Название вопроса и встроенный вопрос различны - какой из них вас больше всего беспокоит?

WebRole в 1.3+ SDK может запускать полный IIS, который выполняется в рамках процесса, отличного от RoleEntryPoint. Это означает, что в целях обработки исключений RoleEntryPoint и веб-приложение IIS полностью изолированы. Вам потребуется явная обработка ошибок в каждом из них, поскольку одно не относится к другому.

Другой вопрос, который вы задали, связан с Run vs OnStart. Метод OnStart вызывается перед подключением вашего экземпляра к LoadBalancer. Это ваш шанс загрузить роль с чем-либо, что вам нужно сделать до того, как ее активирует активный трафик. Вы должны вернуть true и не выдавать ошибку в OnStart, иначе вы никогда не получите активный экземпляр. Некоторые люди используют OnStart для программного создания необходимых им материалов IIS (сайтов, приложений, виртуальных дисков и т. Д.). Метод Run - это ваша точка входа в основную рабочую логику. Это как статическая пустота Main () (но из которой вы никогда не выйдете).

Реальность такова, что роли Web и Worker в значительной степени идентичны, за исключением того, что у роли Web есть красивый декларативный синтаксис для настройки IIS. Все другие предостережения о выполнении в рабочей роли применяются к веб-роли при использовании RoleEntryPoint.

1 голос
/ 09 мая 2011

RoleEntyPoint инициализируется до инициализации среды выполнения ASP.Net. Насколько я помню, если метод Run выдает исключение, роль перезапустится, и вы можете увидеть это на своем портале управления Azure. Смотрите это для некоторых подсказок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...