我正在开发三个Web应用程序,它们是大型系统的一部分。这些是具有API的单页应用程序,因此,对于非API操作,我具有通配符路由,该路由指向我的主控制器。
对于这些应用程序中的两个,这可以正常工作,但是对于第三个应用程序,重定向不起作用,在尝试访问前端路由时,我只得到了404返回。据我所知,该设置是完全相同的,而对于为什么它不起作用,我完全感到困惑。
我使用的是屏幕截图,而不是代码段,因此我可以并排显示设置(在左侧工作,而在右侧工作)。
如您所见,代码的关键部分在两个应用程序中都是相同的,但是一个有效,而一个无效。
我错过了什么?我还应该看哪里?以及我如何调试它的任何指导将不胜感激。
这是代码的关键部分,如您所见,这两个地方都相同:
app.UseMvc(routes =>
{
routes.EnableDependencyInjection();
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
app.MapWhen(x => !x.Request.Path.Value.StartsWith("/api", StringComparison.OrdinalIgnoreCase), builder =>
{
builder.UseMvc(routes =>
{
routes.MapRoute("spa-fallback", "{*url}", new { controller = "Home", action = "Index" });
});
});
答案 0 :(得分:1)
app.UseMvc(routes =>
{
routes.EnableDependencyInjection();
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
app.MapWhen(x => !x.Request.Path.Value.StartsWith("/api",
StringComparison.OrdinalIgnoreCase), builder =>
{
builder.UseMvc(routes =>
{
routes.MapRoute("spa-fallback", "{*url}", new { controller = "Home", action =
"Index" });
});
});
此问题已解决。我看了上面的代码,该代码是通过家庭控制器路由的。这导致我看了HomeController。应用程序之间的区别在于,不起作用的应用程序具有MVC路由属性,并且在Home控制器中添加了“ /”。
[Route("/")] // remove this line
public class HomeController : Controller