Службы с использованием AddX ()
При регистрации служб внутри ConfigureServices
порядок, в котором вы вызываете методы AddX()
, обычно не имеет значения.Таким образом, вы можете заказать и логически сгруппировать их наиболее удобным для вас способом.
Единственный способ, которым заказ на самом деле имеет значение, если существует несколько регистраций служб одного типа, и в этом случае последняя регистрация будетвыиграть.Части каркаса по умолчанию обычно не создаются таким образом.Вместо этого они фактически созданы таким образом, что их можно вызывать несколько раз без проблем.Это особенно полезно, когда вы хотите перенастроить определенные сервисы позже.
Для AddMvc()
и AddCors()
оба метода зарегистрируют отдельный набор сервисов, поэтому при вызове одного из них раньше, чемпрочее.
Обратите внимание, что ни AddMvc()
, ни AddCors()
фактически не устанавливают никакого промежуточного программного обеспечения.Они просто готовят необходимые сервисы, которые нужны промежуточному программному обеспечению для работы.Промежуточное программное обеспечение настраивается в методе Configure
.
Промежуточное программное обеспечение с использованием app.UseX()
Промежуточное программное обеспечение настраивается в Configure
, и есть порядок, в котором вызарегистрировать каждое промежуточное ПО имеет значение .
Промежуточное программное обеспечение представляет собой цепочку конвейеров, которая запускается в том порядке, в котором вы ее регистрировали:
В порядкечтобы одно промежуточное программное обеспечение влияло на другое промежуточное программное обеспечение, оно должно работать на этом другом промежуточном программном обеспечении.Так что в вашем случае, поскольку вы хотите включить CORS для промежуточного программного обеспечения MVC, чтобы вы могли правильно запрашивать маршруты в MVC из других источников, вам необходимо зарегистрировать промежуточное программное обеспечение CORS до промежуточного программного обеспечения MVC.
Вы также можете взглянуть на реализацию промежуточного программного обеспечения CORS .Как вы можете видеть, вызов next()
находится в самом конце, так что это означает, что соответствующая логика промежуточного программного обеспечения CORS запускается до того, как оно выполнит следующее промежуточное программное обеспечение.Это хороший признак того, что он должен запускаться первым.
Итак, правильный порядок:
app.UseCors();
app.UseMvc();
Как правило, промежуточное ПО MVC почти всегда должно быть последним.