Использование регистрации маршрута верхнего уровня не работает с UseSpa.C#

Место общения программистов C#
Ответить
Anonymous
 Использование регистрации маршрута верхнего уровня не работает с UseSpa.

Сообщение Anonymous »

У меня есть проект .NET 6 SPA, использующий маршрутизацию конечных точек, со следующим кодом Program.cs:

Код: Выделить всё

app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();

endpoints.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=Index}/{id?}");
});

app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";

if (app.Environment.IsDevelopment())
{
spa.UseProxyToSpaDevelopmentServer("http://localhost:3000");
}

});

app.Run();
Этот код работает нормально, но сейчас я обновляю проект до .NET 7 и получил предупреждение: предложите использовать регистрацию маршрутов верхнего уровня вместо UseEndpoints. Я изменил код UseEndpoints на следующий:

Код: Выделить всё

app.MapControllers();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");

Однако это изменение полностью нарушает мою маршрутизацию, и вызов любых конечных точек API дает мне ошибку 404. Переход к любой конечной точке API из моего браузера возвращает мой SPA. Если я удалю вызов UseSpa, маршрутизация будет работать нормально.
Как мне заставить это работать?
РЕДАКТИРОВАТЬ: я знаю, что могу удалить UseSpa и вместо этого использовать прокси в другом направлении, в моем внешнем проекте. Кажется, это новый рекомендуемый подход, как описано в этом ответе. В чем разница между UseStaticFiles, UseSpaStaticFiles и UseSpa в ASP.NET Core 2.1? Однако я привык к своей текущей настройке и хотел бы продолжать использовать UseSpa. Неужели это больше невозможно?

Подробнее здесь: https://stackoverflow.com/questions/773 ... ith-usespa
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»