2017-02-22 5 views
1

Я развертываю веб-приложение и различные связанные с ним (непрерывные) webjobs для Azure с помощью Visual Studio 2015. До недавнего времени я наблюдал, что после процесс развертывания webjobs будет поддерживать свое состояние; если работа была запущена, она будет перезапущена, если код был изменен. Если задание было остановлено, код обновится, и веб-сайт останется в состоянии «Остановлен».Хотите, чтобы Azure webjobs поддерживал текущее состояние (Running or Stopped) после публикации веб-приложения

Поведение, которое я сейчас вижу, заключается в том, что остановленные веб-сайты начинаются после развертывания. Это не то поведение, которое я хочу, так как задания останавливаются по какой-то причине. Тот факт, что я публикую новую версию кода веб-приложения и/или код webjob, не следует рассматривать как предположение, что фреймворк должен изменить рабочее состояние веб-объектов.

Контролируется ли это поведение?

ответ

1

Amit Apple дал отличный ответ на этот вопрос here.

«Чтобы развернуть непрерывный WebJob в остановленном состоянии, просто добавьте файл с именем disable.job в корень вашего WebJob (двоичные файлы), это покажет инфраструктуре, что веб-приложение в настоящее время остановлено».

Я быстро просмотрел репозиторий Kudu, и похоже, что это все еще действует. На самом деле это не в документах Kudu.

+0

Ty. Я тоже это видел.Проблема в том, что я хочу, чтобы работающее состояние webjob сохраняло одно и то же следующее развертывание; если он остановлен, остановите его; если он работает, продолжайте работать. Я мог бы поклясться в этом поведении (когда работа начинается, если она остановлена) только недавно началась со мной ... – Matt

0

От ContinuousJobRunner.cs куду проекта, мы могли бы найти IsDisabled свойство используется для проверки, является ли webjob это позволить или нет следующим образом:

private bool IsDisabled 
{ 
    get { return OperationManager.Attempt(() => FileSystemHelpers.FileExists(_disableFilePath) || Settings.IsWebJobsStopped()); } 
} 

Как я знал, для непрерывных WebJobs, мы имеем следующие подходы к его прекращению.

1) Вход в Azure Portal, под лезвием «НАСТРОЙКИ> Настройки приложения», добавьте новый appsetting WEBJOBS_STOPPED и установите значение 1

Примечание: Этот параметр отключит как срабатывает webjobs и непрерывное webjobs.

2) Добавить файл с именем disable.job в корневом каталоге вашего WebJob бинарников

Вы можете войти в Azure Portal, в разделе «Настройки> WebJobs» лезвие вашего веб-приложения, выберите webjob и нажмите кнопку «Стоп» , Кроме того, вы можете вручную добавить этот файл. Для программного способа вы можете использовать WebJobs API с базовым auth, используя Deployment credentials вашего веб-приложения, чтобы запустить/остановить свой WebJob.

Поведение, которое я сейчас вижу, заключается в том, что остановленные веб-сайты начинаются после развертывания. Это не то поведение, которое я хочу, , так как вакансии прекращены по причине.

Для непрерывного WebJobs я протестировал эту проблему и обнаружил, что webjobs будут поддерживать свое состояние (остановлено/запущено) после публикации моего веб-приложения или веб-сайта. Вкратце, пожалуйста, проверьте, как остановить непрерывные WebJobs, и вы можете создать новый webjob, чтобы изолировать эту проблему.

+0

Спасибо за ваш ответ. Что-то непонятное мне. Вы сказали: «Для непрерывных WebJobs я протестировал эту проблему и обнаружил, что webjobs будут поддерживать свое состояние (остановлено/запущено) после публикации моего веб-приложения или webjob. Вкратце, пожалуйста, проверьте, как остановить непрерывные WebJobs и вы может создать новый webjob, чтобы изолировать эту проблему ». Просьба уточнить, какие изменения конфигурации вы внесли, чтобы веб-сайты сохраняли свое состояние после публикации. Или, вы говорите, что это поведение по умолчанию, которое вы испытали? – Matt

+1

Я имею в виду, что если я остановлю/начню свои непрерывные WebJobs с помощью вышеуказанных подходов, то мои WebJobs будут сохранять свое состояние после публикации без изменения какой-либо конфигурации. –