Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向MVC核心中的控制器方法添加替代路由以支持遗留端点_C#_Asp.net Mvc_.net Core_Asp.net Core Mvc_Asp.net Mvc Routing - Fatal编程技术网

C# 如何向MVC核心中的控制器方法添加替代路由以支持遗留端点

C# 如何向MVC核心中的控制器方法添加替代路由以支持遗留端点,c#,asp.net-mvc,.net-core,asp.net-core-mvc,asp.net-mvc-routing,C#,Asp.net Mvc,.net Core,Asp.net Core Mvc,Asp.net Mvc Routing,我正在尝试的以下代码正在更改路由,使其只能通过[Area]/[Controller]/DailyStatusSummary访问-是否有任何方法将其添加为替代路由 [HttpGet("[Area]/[Controller]/DailyStatusSummary")] public async Task<IActionResult> CompanyStatusSummary() { ... etc. [HttpGet(“[Area]/[Con

我正在尝试的以下代码正在更改路由,使其只能通过[Area]/[Controller]/DailyStatusSummary访问-是否有任何方法将其添加为替代路由

    [HttpGet("[Area]/[Controller]/DailyStatusSummary")]

    public async Task<IActionResult> CompanyStatusSummary()
    { 
        ... etc.
[HttpGet(“[Area]/[Controller]/DailyStatusSummary”)]
公共异步任务CompanyStatusSummary()
{ 
等
背景:
我曾经有一个名为DailyStatusSummary的控制器操作。我已经重构了代码,为操作提供了更好的名称,这意味着这个操作现在被称为CompanyStatusSummary。我担心一些用户会将书签添加到旧的DailyStatusSummary端点,因为它是一个受欢迎的页面,所以我尝试将其作为一种替代路径添加(因此,如果您导航到旧端点或新端点,它将点击CompanyStatus Summary操作。)

在App_Start\RouteConfig.cs中,您可以创建特定的路由。假设您的区域为“areaABC”,控制器为“controllerXYZ”,并且只有操作发生更改,类似的操作可能会起作用:

routes.MapRoute(
    name: "Alternate",
    url: "areaABC/controllerXYZ/DailyStatusSummary",
    defaults: new { area = "areaABC", controller = "controllerXYZ", action = "CompanyStatusSummary"}
);
控制器中的操作应保留CompanyStatus摘要(如果使用通用路由捕获,则删除):


重要提示:自定义路由必须在通用MVC路由之前创建。路由是按顺序计算的,如果一个路由与请求URL匹配,则忽略其余路由。谢谢,我实际上使用的是core 3.1,我现有的路由代码如下所示,您能提供适合此路由的Routes.MapRoute代码的翻译吗?`app.UseEndpoints(endpoints=>{endpoints.MapControllerOute(名称:“区域”,模式:{area:exists}/{controller=Home}/{action=Index}/{id?}”);endpoints.MapControllerOute(名称:“default”,模式:{controller=Home}/{action=Index}/{id?}); });`
[HttpGet("[Area]/[Controller]/CompanyStatusSummary")]

public async Task<IActionResult> CompanyStatusSummary()
{ 
endpoints.MapControllerRoute(
    name: "Alternate",
    pattern: "areaABC/controllerXYZ/DailyStatusSummary",
    defaults: new { area = "areaABC", controller = "controllerXYZ", action = "CompanyStatusSummary" });