В данном конкретном случае на Add*
не влияет порядок их добавления в набор сервисов.
Однако, в зависимости от реализации конкретного расширения Add*
, порядок может влиять на конфигурацию.Например, если внутри он использует расширение TryAdd*
, то регистрируется только первый вызов.Последующие вызовы, которые не будут добавлены, поскольку регистрация уже будет существовать.
Общие вызовы AddScoped/AddSingleton/AddTransient
распознают последний вызов для типа, поскольку он отменяет предыдущие вызовы регистрации для этого типа.При регистрации нескольких реализаций для типа для разрешения через IEnumerable<T>
реализации в коллекции будут в том порядке, в котором они были зарегистрированы.
Ссылка Внедрение зависимостей в ASP.NET Core
Для промежуточного программного обеспечения Use*
порядок их добавления в конвейер важен, так как они вызываются в том же порядке.
Порядок
Порядок добавления компонентов промежуточного программного обеспечения в методе Startup.Configure
определяет порядок, в котором компоненты промежуточного программного обеспечения вызываются по запросам, и обратный порядок ответа.Порядок имеет решающее значение для безопасности, производительности и функциональности.
Ссылка Промежуточное ПО ASP.NET Core
По моему опыту, некоторые из них предназначены для некоторых целей.Сторонние интеграции (включая swagger), которым необходим доступ к конвейеру, предлагают добавить свои расширения после AddMvc
, чтобы попытаться избежать конфликтов маршрутов.
Обычно предлагается добавить промежуточное ПО для обеспечения безопасности (Аутентификация / Авторизация) и ведения журналовв начале конвейера, поэтому они имеют тенденцию приходить до AddMvc
.