Вы не можете выбирать, какие экземпляры убивать.В первую очередь это связано со схемой размещения экземпляров Windows Azure, где ваши экземпляры разделены на разные домены сбоев (то есть разные области центра обработки данных - разные стойки и т. Д.).Если вы выберете экземпляры для уничтожения, это может привести к тому, что ваши оставшиеся экземпляры будут находиться в том же домене сбоев, что приведет к аннулированию SLA.
Сказав это:Экземпляр роли выключается (событие OnStop ()).Если вы захватили это событие, вы можете выполнить очистку экземпляра при подготовке к выключению виртуальной машины.Я не могу вспомнить, если вы вышли из балансировщика нагрузки в этот момент, но вы всегда можете заставить себя с помощью простой команды PowerShell (Set-RoleInstanceStatus -Busy).Таким образом, ваш экземпляр asp.net перестанет принимать запросы, и вы сможете с легкостью завершить работу изящно.
РЕДАКТИРОВАТЬ: Извините - не совсем ответил на все ваши вопросы.Поскольку вы получаете возможность захвата OnStop (), вам, возможно, придется реализовать механизм, чтобы убедиться, что в этом случае ничего не обрабатывается.Поскольку вы вышли из балансировщика нагрузки и предполагаете, что ваши запросы обрабатываются довольно быстро (2-5 секунд), вам не нужно долго ждать, чтобы удалить оставшиеся запросы.Вероятно, есть счетчик производительности, чтобы проверить, сколько активных запросов обрабатывается.