【发布时间】:2019-05-12 13:34:59
【问题描述】:
在将我的应用程序从 asp.net core 2.1 更新到 2.2 后,默认路由操作似乎不适用于位于单独类库中的控制器。
例如我有一个这样的默认路由:
routes.MapRoute(
name: "default",
template: "{controller}/{action}"
,defaults: new { controller = "Home", action = "index" }
);
在我的类库中,我有一个控制器 SiteAdminController,它有一个 Index 操作方法。
当我访问 url /siteadmin 时,我得到 HomeController 索引,而不是 SiteAdminController 的索引操作
如果我使用 /siteadmin/index 那么它可以工作
如何在不要求在 url 中明确显示索引操作的情况下使其工作?它在 2.1 中运行良好
【问题讨论】:
-
您使用的是 2.2 兼容级别吗?
.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2)?还是旧的 2_1 兼容性? (它确定是否使用端点路由或 mvc 路由器中间件)。也可以通过MvcOption的EnableEndpointRouting属性单独禁用 -
是 2.2 兼容性和进程托管
-
更改为 2.1 兼容性确实可以解决问题,但我希望它与 2.2 兼容
-
在尝试在新解决方案中复制此问题时遇到问题,无法弄清楚我的主要解决方案中可能导致此问题的不同之处。
-
奇怪的是,除了 cloudscribe 核心的主要开发解决方案之外,我似乎无法在其他解决方案中重现这一点。如果有人想帮助解决这个问题,repo 在这里:github.com/cloudscribe/cloudscribe 请注意,即使是使用我们的项目模板和使用我们的 nugets 创建的新项目,在升级到 netcoreapp2.2 时也可以正常工作。目前我很困惑为什么会出现这个问题。
标签: asp.net-core asp.net-core-mvc