Доступ к объекту веб-приложения Azure из веб-задания Azure
У нас есть статический класс в WebApp, который содержит статический словарь текущих сессий и имени пользователя. Нам нужно иметь доступ к данным в словаре в WebJob, поскольку мы хотим обновлять данные в зависимости от того, у кого в данный момент есть активные сеансы. WebJob запускается каждые 5 минут и должен иметь текущий список сеансов / пользователей.
Я могу получить доступ к словарю из веб-задания, но оно всегда равно нулю. У нас есть вход в webApp, который проверяет, есть ли записи в словаре, но когда веб-задание обращается к словарю, его ноль.
Как я могу получить этот объект в webJob и получить его данные? Нужно ли нам использовать хранилище Azure (очередь / таблица), чтобы это работало?
1 ответ
"Azure AppService" размещается в "плане AppService", который, в свою очередь, состоит из нескольких виртуальных машин. WebJobs ("your.webjob.exe") и WebApps (обычно "w3wp.exe") являются полностью независимыми процессами в этих системах. Они могут работать на одной машине, но на это нет никаких гарантий. В любом случае, связь между ними будет сложной и определенно не может быть достигнута с помощью общей статической переменной.
Для вашего случая использования вы должны использовать общее хранилище. Хранилище Azure может работать, но кэш Azure Redis или простой SQL также могут помочь. Зависит от ваших рамок и требований.