Это связано со способом ASP. NET Работает заказ основного промежуточного ПО. У Microsoft есть отличная документация здесь относительно упорядочивания промежуточного программного обеспечения, но для изменения этих документов я скопирую часть ее сюда.
Ознакомьтесь с порядком выполнения промежуточного программного обеспечения ниже:
Вы можете увидеть порядок, в котором ASP. NET Core выполняется через конвейер промежуточного программного обеспечения, при этом маршрутизация конечных точек является последним элементом в порядке выполнения. Помещая свое собственное промежуточное ПО после маршрутизации конечной точки, оно по существу замыкается в этой точке и никогда не попадает (при обратном прохождении цепочки выполнения).
Из приведенной выше ссылки в документации указано:
Порядок критически важен для безопасности, производительности и функциональности.
Из-за любви одних и ненависти к другим эта договоренность - своего рода попался когда дело доходит до ожидаемого поведения.