gpt4 book ai didi

c# - ASP.NET Core MVC 通配符路由无法使用与另一个正在工作的设置相同的设置

转载 作者:太空狗 更新时间:2023-10-29 17:58:50 26 4
gpt4 key购买 nike

我正在开发三个 Web 应用程序,它们是一个更大系统的一部分。这些是带有 API 的单页应用程序,因此我有指向我的主 Controller 的非 API 操作的通配符路由。

对于其中两个应用程序,这工作正常,但对于第三个应用程序,重定向不起作用,我在尝试访问前端路由时只收到 404 返回。据我所知,设置是相同的,但我完全不明白为什么它不起作用。

我使用的是屏幕截图而不是代码片段,因此我可以并排显示设置(在左侧工作,不在右侧工作)。

如您所见,代码的关键部分在两个应用程序中是相同的,只是一个有效,一个无效。

我错过了什么?我还应该去哪里看?非常感谢任何关于如何调试它的指导。

.csproj enter image description here

Startup.cs enter image description here

这是代码的关键部分,如您所见,两处完全相同:

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" });
});
});

Program.cs enter image description here

Web.config enter image description here

最佳答案

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" });
});
});

这已经解决了。我查看了上面与家庭 Controller 一起路由的代码。这促使我查看 HomeController。应用程序之间的区别在于,不工作的应用程序在 Home Controller 中具有 MVC Route 属性,并添加了“/”。

[Route("/")] // remove this line
public class HomeController : Controller

关于c# - ASP.NET Core MVC 通配符路由无法使用与另一个正在工作的设置相同的设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52095726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com