繁体   English   中英

如何向 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" });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM