Если у меня есть служба, которая хранит токен как ленивый объект, и токен извлекается внутри фабрики значений, сохраняется ли это значение при нескольких запросах, или поскольку базовая служба ограничена областью действия, ленивый запуск начинается с нулевого значения для каждый запрос?
Код: Выделить всё
_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,
Означает ли это, что токен извлекается каждый раз, когда запрашивается служба (несмотря на то, что фабрика значений является потокобезопасной) или фабрику значений можно вызвать только один раз (даже если она вызывается из нескольких областей), поскольку он объявлен как статический?
Подробнее здесь:
https://stackoverflow.com/questions/785 ... e-in-net-6