Я пытаюсь сделать SPA приложение используя React как фронтенд и C# как бекенд. В реакте у меня используются такие маршруты как /register и /register/conf. Чтобы они работали на сервере на ASP, я использую MapSpaFallbackRoute():
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapSpaFallbackRoute("spa-fallback",
new { controller = "Home", action = "Index" });
});
Но этот пример у меня не работает. Когда я пытаюсь, например, обновить или ввести в адресную строку непосредственно /register, то сервер возвращает мне 404 ошибку. Что я делаю не так?
У вас настроено два "универсальных" маршрута, т.е. маршрута которые могут обработать почти любой запрос. Неудивительно что один из них не работает! В частности, ваш маршрут /register определяется как name: default, controller: register, action: Index.
Вам нужно изменить первый их них так, чтобы он не срабатывал для пути /register. Это можно сделать несколькими способами.
Самый простой способ - перенести все контроллеры бекенда на другой виртуальный путь:
routes.MapRoute(name: "default", template: "api/{controller}/{action}");
Способ сложнее - регистрировать отдельный маршрут для каждого контроллера
routes.MapRoute(name: "foo", template: "Foo/{action}", defaults: new { controller = "Foo" });
routes.MapRoute(name: "bar", template: "Bar/{action}", defaults: new { controller = "Bar" });
routes.MapRoute(name: "baz", template: "Baz/{action}", defaults: new { controller = "Baz" });
Третий способ - то же самое, что и второй, но используя маршруты основанные на атрибутах
[Route("Foo")]
public class FooController: Controller
{
// ...
}
у меня React + Asp.net core 2.1, настройка выглядит так
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "api/{controller}/{action}/{id?}");
routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});
полет норм
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости