Environment.SetEnvironmentVariable в функции Azure

Насколько плохо использовать Environment.SetEnvironmentVariable в функциях Azure? Основываясь на моем первоначальном наблюдении, кажется, что он работает, как и ожидалось (т.е. сохраняет значение и возвращается, когда я спросил, используя вызов Environment.GetEnvironmentVariable), но нигде не отображается в списке переменных среды, когда я открываю функцию в проводнике Kudu. Где он установлен, можно ли его использовать или какие-либо побочные эффекты от его использования?

В моем случае мне нужно получить информацию о пользователе, используя токен, переданный в заголовки функций. Я не хочу снова и снова получать идентификатор пользователя, а хочу где-то его кэшировать. Думал об использовании кеша Redis, но а) я использую функции V1 из-за проблем с некоторыми библиотеками б) только для одной переменной, по крайней мере, на данный момент, я подумал, что это слишком дорого. любые другие предложения?

Спасибо - Шрикант


person Srikanth Alluri    schedule 24.10.2020    source источник
comment
Это наихудший из возможных способов использования переменной окружения. Почему бы не создать класс с одноэлементной областью действия, который содержит этот токен, и внедрить его, чтобы установить токен один раз, а затем внедрить его туда, где он вам нужен?   -  person Ian Kemp    schedule 25.10.2020
comment
спасибо @IanKemp. Я думал, что это плохо, но не знаю почему :), В любом случае, ради жетона я это делаю. но это еще одна переменная, которую я должен получить на основе аутентифицированного пользователя AD. Итак, я получил токен -> дает мне основной идентификатор пользователя -> получает запись пользователя из CRM, используя этот идентификатор пользователя / адрес электронной почты -> сохраняет эту запись пользователя при вызовах. Потому что я знаю, что этот пользователь будет использовать функцию несколько раз (это может быть через 5 минут или более). Эта учетная запись AD всегда будет иметь одну и ту же запись пользователя в CRM, мне не имеет смысла продолжать извлекать та же запись.   -  person Srikanth Alluri    schedule 25.10.2020
comment
на самом деле, мне интересно узнать, почему, где он хранится, какие осложнения он вызовет и т. д.   -  person Srikanth Alluri    schedule 25.10.2020


Ответы (1)


Когда вы устанавливаете переменную с помощью Environment.SetEnvironmentVariable, она не будет отображаться в настройках приложения. Но мы можем использовать его Environment.GetEnvironmentVariable как и ожидалось. Хотя упомянутое вами решение не так уж хорошо, но оно может реализовать ваше требование. Побочным эффектом является при перезапуске приложения-функции переменные будут потеряны.

person Hury Shen    schedule 26.10.2020
comment
Отлично, спасибо за вклад @Hury Shen. Это то, что я ищу. Пока нет серьезных проблем (потеря их при перезапуске функционального приложения может не быть большой проблемой, возможно, для этого 1 вызова может потребоваться некоторое время, чтобы получить подробности, но все последующие 100 вызовов сэкономят время. - person Srikanth Alluri; 27.10.2020