You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多个请求路由到同一个ASP.NET控制器?

多URL指向同一控制器方法的解决方案

方案一:启用并正确使用属性路由

你之前的[Route]特性无效,大概率是因为没启用属性路由。在ASP.NET MVC中,需要先在RouteConfig.cs(或Global.asax的路由配置代码里)开启属性路由:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        
        // 必须先添加这行,启用属性路由
        routes.MapMvcAttributeRoutes();

        // 其他默认路由
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

开启后,你的多[Route]特性写法就能生效,直接给同一个方法添加多个路由特性即可:

[Route("abc_1")]
[Route("abc_2")]
public ActionResult Index()
{
    return Json("OK");
}

如果后续还有类似abc_3、abc_4的URL,也可以用路由模板批量匹配:

// 匹配abc_1、abc_2、abc_3...任意数字后缀的URL
[Route("abc_{num:int}")]
public ActionResult Index(int num)
{
    // 可以通过num参数区分不同请求,方便后续扩展
    return Json($"OK, num: {num}");
}

方案二:在全局路由中配置匹配规则

如果不想用属性路由,也可以在RouteConfig.cs里通过MapRoute配置统一的路由规则,指定匹配模式和约束:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        // 新增针对abc_*的路由,优先级要高于默认路由
        routes.MapRoute(
            name: "AbcMultipleRoutes",
            url: "abc_{suffix}",
            defaults: new { controller = "Abc", action = "Index" },
            // 约束后缀只能是1或2,精准匹配你的需求
            constraints: new { suffix = @"1|2" }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

这样所有/abc_1、/abc_2的请求都会自动路由到AbcController的Index方法。如果需要后续扩展后缀,只修改约束里的正则即可(比如改成@"1|2|3")。


内容的提问来源于stack exchange,提问作者Alex Pertenava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:47:25