【发布时间】:2019-12-20 17:48:42
【问题描述】:
我有一个使用区域的 asp.net core 2.2 应用程序。我使用Url.Action("ActionName") 生成一个操作 URL。这会生成以下格式的 url <area-name>/<controller-name>/<action-name>。
我已升级到 .net core 3,升级后生成的 URL 不再包含 <area-name> 部分,仅生成 <controller-name>/<action-name>。
我阅读了 3.0 中引入的更改,但没有发现任何有用的内容。
有什么想法吗?
编辑:代码设置
这是在 startup.cs 中设置路由的方式
app.UseMvc(routes =>
{
routes.MapRoute(
name: "error",
template: "{controller}/{action}",
defaults: new { controller = "Error", action = "Error" },
);
routes.MapAreaRoute(
name: "admin",
areaName: "admin",
template: "{area}/{controller}/{action}/{id?}",
defaults: new { area = "admin", action = "index" },
);
routes.MapAreaRoute(
name: "identity",
areaName: "identity",
template: "{area}/{controller}/{action}",
defaults: new { area = "identity", action = "index" }
);
routes.MapAreaRoute(
name: "cmsfront",
areaName: "cmsfront",
template: "{*url}",
defaults: new { controller = "Front", action = "Index" }
);
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
以下是 MVC 的设置方式:
services
.AddMvc(setupAction =>
{
setupAction.EnableEndpointRouting = false;
})
.SetCompatibilityVersion(CompatibilityVersion.Latest);
这是区域文件夹结构:
【问题讨论】:
-
您是否在 2.2 中禁用了端点路由?
-
@KirkLarkin 是的,我确实禁用了它,但不是在 2.2 中,我在 3.0 中禁用了它。否则它不会启动,因为我使用
app.UseMvc(routes => { ... });设置了我的路线,但我没有对路线本身进行任何更改。 -
您能分享您的 Startup.cs 吗?
Area中的文件夹结构如何? -
@Rena 我已经更新了原始问题。自 2.2 以来,除了
EnableEndpointRouting = false;外,没有任何变化
标签: asp.net asp.net-mvc asp.net-core asp.net-core-3.0