Использование Lazy для хранения значения токена в службе с заданной областью в .NET 6C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Использование Lazy для хранения значения токена в службе с заданной областью в .NET 6

Сообщение Anonymous »

Если у меня есть служба, которая хранит токен как ленивый объект, и токен извлекается внутри фабрики значений, сохраняется ли это значение при нескольких запросах, или поскольку базовая служба ограничена областью действия, ленивый запуск начинается с нулевого значения для каждый запрос?

Код: Выделить всё

_token = new Lazy(() =>
{
var token = new Token();

var task = Task.Run(async () =>
{
var response = await Login();

token.AccessToken = response.AccessToken;
});

task.Wait();

return token;
});
Это вызывается в конструкторе сервиса:

Код: Выделить всё

public MyService()
{
private static Lazy _token

if (_token is { IsValueCreated: false }) // execute logic above
}
Однако MyService зарегистрирован как область действия Startup.cs,

Код: Выделить всё

services.AddScoped();
Означает ли это, что токен извлекается каждый раз, когда запрашивается служба (несмотря на то, что фабрика значений является потокобезопасной) или фабрику значений можно вызвать только один раз (даже если она вызывается из нескольких областей), поскольку он объявлен как статический?

Подробнее здесь: https://stackoverflow.com/questions/785 ... e-in-net-6
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»