Примечание: Исходя из ваших ссылок, я предполагаю, что вы используете промежуточное программное обеспечение app.UseSpa()
.
Промежуточное программное обеспечение маршрута выполняется по порядку, и если запрос никогда не находит контроллер, возвращается состояние 404
. Промежуточное программное обеспечение UseSpa
является универсальным, и любой запрос, который попадает в эту точку, всегда будет возвращать страницу SPA по умолчанию. Это означает, что любой запрос к маршруту, который еще не нашел контроллер, всегда будет возвращать страницу SPA по умолчанию, а не выбрасывать 404.
То, что вы захотите сделать, вызывайте UseSpa()
, только если у маршрута нет префикса /api
. По сути, любые запросы, начинающиеся с /api
, пропускаются после этой точки.
Вместо:
app.UseSpa(spa =>
{
//[Snip]
});
Использование:
app.MapWhen(x => !x.Request.Path.Value.StartsWith("/api"), builder =>
{
builder.UseSpa(spa =>
{
//[Snip]
});
});
Это разрешит любой запрос, который начинается с /api
после этой точки, и, если никакое другое промежуточное ПО или маршруты не совпадают, будет возвращено 404
.