如何向 MVC Core 中的控制器方法添加替代路由以支持遗留端点
How can I add an alternative route to a controller method in MVC Core to support a legacy endpoint
我正在尝试的以下代码正在更改路线,以便 仅 可通过 [Area]/[Controller]/DailyStatusSummary 访问它 - 是否有任何方法可以添加它作为替代路线?
[HttpGet("[Area]/[Controller]/DailyStatusSummary")]
public async Task<IActionResult> CompanyStatusSummary()
{
... etc.
背景:
我曾经有一个名为 DailyStatusSummary 的控制器操作。我重构了我的代码以便为操作提供更好的名称,这意味着这个操作现在特别称为 CompanyStatusSummary。我担心一些用户对旧的 DailyStatusSummary 端点有书签,因为它是一个受欢迎的页面,所以我试图将其添加为替代路由(因此,如果您导航到旧端点或新端点,它会触发 CompanyStatusSummary 操作。)
在App_Start\RouteConfig.cs中你可以创建一个特定的路由。假设你所在的地区是 "areaABC",你的控制器是 "controllerXYZ",只有动作发生变化,这样的事情可能会奏效:
routes.MapRoute(
name: "Alternate",
url: "areaABC/controllerXYZ/DailyStatusSummary",
defaults: new { area = "areaABC", controller = "controllerXYZ", action = "CompanyStatusSummary"}
);
并且控制器中的操作应保留 CompanyStatusSummary(如果使用通用路由捕获,则删除):
[HttpGet("[Area]/[Controller]/CompanyStatusSummary")]
public async Task<IActionResult> CompanyStatusSummary()
{
对于.Net Core 3.1,路由映射应该在app.UseEndpoints中完成,映射控制器路由:
endpoints.MapControllerRoute(
name: "Alternate",
pattern: "areaABC/controllerXYZ/DailyStatusSummary",
defaults: new { area = "areaABC", controller = "controllerXYZ", action = "CompanyStatusSummary" });
我正在尝试的以下代码正在更改路线,以便 仅 可通过 [Area]/[Controller]/DailyStatusSummary 访问它 - 是否有任何方法可以添加它作为替代路线?
[HttpGet("[Area]/[Controller]/DailyStatusSummary")]
public async Task<IActionResult> CompanyStatusSummary()
{
... etc.
背景: 我曾经有一个名为 DailyStatusSummary 的控制器操作。我重构了我的代码以便为操作提供更好的名称,这意味着这个操作现在特别称为 CompanyStatusSummary。我担心一些用户对旧的 DailyStatusSummary 端点有书签,因为它是一个受欢迎的页面,所以我试图将其添加为替代路由(因此,如果您导航到旧端点或新端点,它会触发 CompanyStatusSummary 操作。)
在App_Start\RouteConfig.cs中你可以创建一个特定的路由。假设你所在的地区是 "areaABC",你的控制器是 "controllerXYZ",只有动作发生变化,这样的事情可能会奏效:
routes.MapRoute(
name: "Alternate",
url: "areaABC/controllerXYZ/DailyStatusSummary",
defaults: new { area = "areaABC", controller = "controllerXYZ", action = "CompanyStatusSummary"}
);
并且控制器中的操作应保留 CompanyStatusSummary(如果使用通用路由捕获,则删除):
[HttpGet("[Area]/[Controller]/CompanyStatusSummary")]
public async Task<IActionResult> CompanyStatusSummary()
{
对于.Net Core 3.1,路由映射应该在app.UseEndpoints中完成,映射控制器路由:
endpoints.MapControllerRoute(
name: "Alternate",
pattern: "areaABC/controllerXYZ/DailyStatusSummary",
defaults: new { area = "areaABC", controller = "controllerXYZ", action = "CompanyStatusSummary" });