【发布时间】:2020-09-14 15:59:26
【问题描述】:
我的主页/索引视图中有这个链接:
<a asp-controller="About" asp-action="Index">About Link Test</a>
我的关于/索引视图中的这个链接:
<a asp-controller="Home" asp-action="Index">Home Link Test</a>
我在 Startup.cs 中有一个典型的默认路由约定:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
当我运行应用程序时,我看到了预期的主页/索引视图。但是,当我单击该操作时,我会收到 403 Forbidden,因为它试图将 About 路由视为目录。错误显示中显示的物理路径也很奇怪,因为它看起来像是在尝试列出应用程序根目录。
现在是“有时”部分。如果我将 Startup.cs 中的默认路由更改为:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=About}/{action=Index}/{id?}");
});
然后,当我运行应用程序时,我会看到预期的 About/Index 视图。 Home/Index 操作链接有效,奇怪的是 Home/Index 视图上的 About/Index 链接也有效!同一链接因不同的控制器默认路由而中断。
我对 ASP.NET Core 3.1 中的 MVC 还很陌生,所以我确信这是一个简单的配置问题或其他问题,但我希望能提供任何关于为什么路由没有正确映射的指导,具体取决于默认路线图!
【问题讨论】:
标签: asp.net-core asp.net-core-mvc