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