Я пытаюсь сделать 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" });
});
полет норм
Виртуальный выделенный сервер (VDS) становится отличным выбором
Ребят, помогите пожалуйста, я просто уже не понимаю почему так происходит
Там, где английские буквы, все нормально, но там, где русские - получаются какие-то кракозябрыНасколько понимаю, что-то не так с кодировкой,...