【问题标题】:Controller action mapping to wrong physical path, sometimes控制器动作映射到错误的物理路径,有时
【发布时间】: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


    【解决方案1】:

    实际上,奇怪的是,这竟然是这个问题的另一个症状:

    HTTP Error 500.35 - ANCM Multiple In-Process Applications in same Process ASP.NET Core 3

    我删除了.vs文件夹中指定的配置文件,重启VS后链接正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      相关资源
      最近更新 更多