Я занимаюсь разработкой ASP. NET Базового приложения с React + Redux, используя шаблон проекта Visual Studio 2019 по умолчанию. SPA должен запускаться, когда пользователь переходит на «/», но он отображает все, что я набираю в URL, включая конечные точки API с глаголом GET.
Я добавил некоторую конфигурацию при запуске, но это в основном то же самое, и я ничего не перемещал:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseWebSockets();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=Index}/{id?}");
});
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
У меня есть API внутри контроллера LinkToUtilsController
(который украшен атрибутом [Route("api/[controller]/")]
), целью которого является получение идентификатора ссылки и перенаправляет на внешний ресурс (или возвращает ошибку HTTP). Конечная точка - http://localhost/api/linktoutils/redirect?linkId=STEP
, но когда я открываю ее из браузера, она показывает приложение ReactJS (которое даже не использует маршрутизацию и никогда не понадобится). Странно то, что это работает, если я заставлю перезагрузить страницу, нажав CTRL + F5.
Это происходит либо с локального хоста, либо с производства.