Scoped для http-запроса, Transient для каждого типа.
Поскольку ваш заголовок авторизации находится на запросе, вы можете зарегистрировать класс AuthenticationHeader
как Scoped, что означает, что все типы, созданные для обслуживания вашего запроса, получат такой же экземпляр.
Но вы также можете зарегистрировать его как Transient, тогда все типы, созданные для вашего запроса, получат новый экземпляр AuthenticationHeader
, который внутренне использует IHttpContextAccessor, который даст вам тот же HttpContext для вашего http-запроса.
Таким образом, вы можете использовать оба, единственное соображение - это потребление памяти. Scoped будет использовать меньше памяти.
Edit:
На самом деле вы также можете использовать Singleton, потому что IHttpContextAccessor
зарегистрирован как Singleton и внутренне , он использует AsyncLocal для хранения текущего контекста. Но я не рекомендовал бы это, потому что в будущем AuthenticationHeader
может быть расширен с некоторой дополнительной логикой, которая нарушит поведение.