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

标签 c# asp.net-mvc asp.net-core routing asp.net-core-mvc

我正在开发三个 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/

相关文章:

c# - 传入字典的模型项的类型为 'System.Net.Http.HttpResponseMessage' ,

c# - System.Threading.ThreadPool.QueueUserWorkItem C# 的动态回调方法

c# - 找不到路径 '/apple-touch-icon-120x120-precomposed.png' 的 Controller

asp.net-mvc - 使用查询字符串将 ASP.NET MVC URL 路由到 url

c# - .NET Core MVC Web API Controller 不返回数据,尽管与返回数据的 Controller 相同

c# - .NET Core 2.1 中的 HttpContext.GetTokenAsync 无法检索 JWT

c# - 在 vNext 中从类库访问 appsetting.json 或 config.json

c# - Sorted 为真时 SelectedValue 的问题(ComboBox)

c# - 防止在代码中使用 system.reflection

javascript - 哪些编码约定可以帮助 jQuery 和 Firebug 协同工作?