2015-11-19 3 views
1

В ASP.NET/IIS, когда происходит развертывание или изменяется web.config (или несколько других сценариев), ASP.NET создаст новый домен приложения для сайта. Новый домен приложения получает запросы, в то время как для старого домена приложения требуется некоторое время, чтобы отступить (завершить его текущие запросы) до его уничтожения. Я хотел бы узнать, работает ли мой код как «текущий» домен приложения или он был заменен. Есть ли внутрикодовый способ сделать это?Как узнать, являюсь ли я «самым новым» доменом приложения ASP.NET?

+0

Могу ли я спросить, почему вы хотите это сделать? –

+0

@YuvalItzchakov В нашем приложении есть некоторые фоновые работники, которых мы хотим вести по-другому в этом случае – ChaseMedallion

+0

Вы регистрируете этих работников с помощью ASP.NET threadpool? –

ответ

0

Нет никакого пуленепробиваемого способа определить, что внутри системы, поэтому вам нужно создать свои собственные механизмы. Например, даже если вам удастся определить, что вы являетесь последним доменом приложения, это все еще не является признаком того, что вы являетесь обработчиком приложений, например, IIS может и будет перерабатывать весь рабочий процесс порой (например, когда глобальный изменение конфигурации выполняется или когда он не может отменить службу активации процесса и т. д.), и в этих случаях может быть фактически два экземпляра w3wp.exe (называемый перераспределением с перекрытием), после чего ваша логика домена приложения завершится с ошибкой. Конечно, когда вам нужно масштабировать до большего количества машин, проблема становится еще более распределенной системой (и даже не считая веб-садов, что усложняло бы дальше).

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