首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Asp.Net路由:如何忽略多个通配符路由?

在Asp.Net路由中,要忽略多个通配符路由,可以使用以下方法:

  1. 使用正则表达式限制路由模式:

在定义路由时,可以使用正则表达式限制路由模式,以忽略不需要的通配符路由。例如,要忽略以“blog”开头的路由,可以使用以下代码:

代码语言:csharp
复制
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    constraints: new { controller = "^(?!blog).*" }
);
  1. 使用RouteBase类自定义路由:

可以通过继承RouteBase类创建自定义路由,以便更好地控制路由匹配。例如,要忽略以“blog”开头的路由,可以使用以下代码:

代码语言:csharp
复制
public class CustomRoute : RouteBase
{
    public override RouteData GetRouteData(HttpContextBase httpContext)
    {
        var data = new RouteData();
        var url = httpContext.Request.Path.ToLower();

        if (url.StartsWith("/blog"))
        {
            return null;
        }

        // 添加其他路由逻辑

        return data;
    }

    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
    {
        // 添加虚拟路径生成逻辑
    }
}

然后在Global.asax.cs文件中使用自定义路由:

代码语言:csharp
复制
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.Add(new CustomRoute());
}

通过以上方法,可以忽略多个通配符路由,从而实现更精确的路由匹配。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

什么是路由模式通配符

然而,正如我们稍后将看到的,这并没有考虑到外部路由号码,通常是 9。 因此,如果最终用户呼叫上述号码,CUCM 会在路由模式表中找到它,然后,它查看相关的路由列表和组,以确定应该如何路由该外部呼叫。...输入路由模式很简单,但如果要输入数百个数字怎么办?这就是通配符发挥作用的地方。 什么是通配符? 简单地说,计算机科学中的通配符是附加到一串信息的符号。...在 CUCM 中, 通配符可以显示为 X,但是,我们可以使用其他几个路由模式通配符。...CUCM 中通配符的目的 是使路由模式更简洁且更易于阅读,毕竟,唯一的选择是为每个可能的电话号码编写数千个路由模式!让我们看一些例子,以使其更清楚。...X 通配符 X 通配符用于指定 0-9 范围内的数字,它可能是路由表上最常见的通配符。假设您在一个销售团队工作,该团队需要接触电话号码以 812-365 开头的所有潜在客户。

49710
  • 什么是路由模式通配符

    [202204070934196.png] 因此,如果最终用户呼叫上述号码,CUCM 会在路由模式表中找到它,然后,它查看相关的路由列表和组,以确定应该如何路由该外部呼叫。...输入路由模式很简单,但如果要输入数百个数字怎么办?这就是通配符发挥作用的地方。 什么是通配符? 简单地说,计算机科学中的通配符是附加到一串信息的符号。...在 CUCM 中, 通配符可以显示为 X,但是,我们可以使用其他几个路由模式通配符。...CUCM 中通配符的目的 是使路由模式更简洁且更易于阅读,毕竟,唯一的选择是为每个可能的电话号码编写数千个路由模式!让我们看一些例子,以使其更清楚。...X 通配符 X 通配符用于指定 0-9 范围内的数字,它可能是路由表上最常见的通配符。 假设您在一个销售团队工作,该团队需要接触电话号码以 812-365 开头的所有潜在客户。

    77350

    ASP.NET路由系统:路由映射

    原因很简单,如果中间发生了路由,基于页面的RouteData的各项属性都不可能为空。[实例源代码下载] ? 那么是否意味着如果请求地址对应着一个现存的物理文件,ASP.NET就会自动忽略路由呢?...是否对现有文件实施路由取决于代表全局路由表的RouteCollection对象的RouteExistingFiles属性,该属性默认情况下为False,我们可以将此属性设置为True使ASP.NET路由系统忽略现有物理文件的存在...四、注册路由忽略地址 如果将代表全局路由表的RouteTable的静态属性Routes的RouteExistingFiles属性设置为True,意味着ASP.NET针对所有抵达的请求都一视同仁,都按照注册的路由表进行注册...为了让ASP.NET路由系统忽略掉针对.js文件请求,我们可以按照如下的方式在Global.asax中调用RouteTable的Routes属性的Ignore方法。...的路由系统:URL与物理文件的分离 ASP.NET路由系统:路由映射 ASP.NET路由系统:根据路由规则生成URL

    2.3K90

    ASP.NET 路由

    ASP.NET 路由使您可以使用不必映射到网站中特定文件的 URL。由于 URL 不必映射到文件,所以可以在 Web 应用程序中使用 URL,这些 URL 是描述性的用户操作,因此更易于被用户理解。...在一个不使用路由ASP.NET 应用程序中,对 URL 的传入请求通常映射到磁盘上的物理文件,如 .aspx 文件。...在 ASP.NET 路由中,您可以定义 URL 模式,该模式包含在处理 URL 请求时使用的值的占位符。在运行时,应用程序名称后面的 URL 部分根据您所定义的 URL 模式分析为离散值。...由于 ASP.NET 路由可以从 URL 提取值,所以处理传入请求时不更改 URL。如果必须创建一个 URL,则将参数值传递到为您生成 URL 的方法中。...您可以在分隔符之间定义多个占位符,但必须用一个常量值分隔开。

    2.3K81

    ASP.NET Core的路由:内联路由约束的检验

    [本文已经同步到《ASP.NET Core框架揭秘》之中] 1: public interface IRouteConstraint 2: { 3:     bool Match(HttpContext...当我们在一个ASP.NET Core应用中使用路由功能的时候,除了需要注册这个RouterMiddleware中间件之外,一般还需要调用ServiceCollection的扩展方法AddRouting注册一些与路由相关的服务...接下来,我们将通过一个简单的实例来演示如何创建这么一个用于验证Culture的自定义约束。不过在这之前我们不妨先来看看使用这个约束最终实现的效果。...---- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系 ASP.NET Core的路由[2]:路由系统的核心对象——Router ASP.NET Core的路由...[3]:Router的创建者——RouteBuilder ASP.NET Core的路由[4]:来认识一下实现路由的RouterMiddleware中间件 ASP.NET Core的路由[5]:内联路由约束的检验

    1.3K60

    ASP.NET路由系统:根据路由规则生成URL

    前面我们已经提到过,ASP.NET路由系统主要具有两个方面的应用,其一就是通过注册URL模板与物理文件路径的匹配实现请求地址和物理地址的分离;另一个则是通过注册的路由规测生成一个相应的URL。...,会遍历整个集合的每个路由对象并调用其GetVirtualPath方法,如果返回的VirtualPathData不会Null则直接将其作为返回值;否则(找不到匹配的路由对象)返回Null。...如果在调用GetVirtualPath确定了具体使用的路由对象,则直接调用该路由对象的GetVirtualPath方法并返回其执行结果。...路由对象针对GetVirtualPath方法而进行的路由匹配只要求URL模板中定义的变量的值都能被提供,而这些变量值具有三种来源,分别是路由对象定义的默认变量值、指定RequestContext的RouteData...ASP.NET路由系统:URL与物理文件的分离 ASP.NET路由系统:路由映射 ASP.NET路由系统:根据路由规则生成URL

    1.3K80

    ASP.NET MVC 路由详解

    事隔多年,其实也就一年啦,重新整理下ASP.NET MVC的相关知识。继续前面的内容,来说说路由。 Route ?...这是项目中App_Star/RouteConfig.cs 中的默认路由信息,上面有几个关键词: 路由规则Route:需指定路由的格式,默认值,处理器 路由数据RouteData:当前请求上下文匹配路由规则而到的对象...Collection,一个MVC项目中,可以配置多个路由规则,按照键值对的格式存储到路由集合中 路由表RouteTable:类中包含静态的RouteCollection属性,完成所有路由规则的全局存储...其中{controller}和{action}不能修改 defaults 默认值 路由规则 重点说下路由规则,路由规则中{controller}和{action}不能修改,因为这是MVC的默认字段。...拓展 使用 RouteDebug 进行路由调试 总结 路由规则可以注册多条 路由规则的名称不能重复 路由规则有顺序,并且按照顺序进行匹配 子频道的路由规则配置应放在靠前 路由规则可以设置约束 路由规则匹配的控制器可以设置命名空间约束

    1.5K20

    ASP.NET Core的路由路由系统的核心对象——Router

    ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流程使用...,并在成功匹配的情况下解析出路由参数并指定请求处理器之外,Router的路由解析还为另一个领用场景服务,那就是根据自身的路由规则和提供的参数生成一个URL。...如果Router完成路由解析并判断当前请求与自身的路由规则一致,那么它会将解析出来的路由参数转换成一个RouteData并存放到RouteContext对象代表的上下文之中,另一个一并被放入上下文的是代表当前请求处理器的...至于另一个属性Routers,则保存着实施路由解析并提供路由参数的所有Router对象。...”的路由解析策略就体现在这个类型中。

    1.3K10

    asp.net core之路由

    ASP.NET Core 中,路由是一个非常重要的概念,它决定了如何将传入的请求映射到相应的处理程序。...本文将详细介绍 ASP.NET Core 中的路由系统,包括路由的基本原理、路由模板、路由参数、路由约束等内容,并提供相应的代码示例。...UseRouting 和UseEndpoints 在asp.net core5之前的默认模板项目里面,我们都能看到UseRouting和UseEndpoints这两个中间件。用于配置路由。...路由基本原理 在 ASP.NET Core 中,路由系统负责将传入的 URL 请求映射到相应的处理程序。它通过匹配传入的 URL 和预定义的路由模板来确定请求应该由哪个处理程序处理。...可在路由段中定义多个路由参数,但必须用文本值隔开这些路由参数。

    21710

    ASP.NET Core的路由路由系统的核心对象——Router

    ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流程使用...[本文已经同步到《ASP.NET Core框架揭秘》之中] 目录 一、IRouter接口 二、RouteContext 三、RouteData 四、Route 五、RouteHandler 总结 一...,并在成功匹配的情况下解析出路由参数并指定请求处理器之外,Router的路由解析还为另一个领用场景服务,那就是根据自身的路由规则和提供的参数生成一个URL。...如果Router完成路由解析并判断当前请求与自身的路由规则一致,那么它会将解析出来的路由参数转换成一个RouteData并存放到RouteContext对象代表的上下文之中,另一个一并被放入上下文的是代表当前请求处理器的...至于另一个属性Routers,则保存着实施路由解析并提供路由参数的所有Router对象。

    1.9K40

    理解ASP.NET Core - 路由(Routing)

    通过=设置默认值,如:{name=jjj} 表示name的默认值是jjj 通过:添加内联约束,如:{id:int},后面追加:可以添加多个内联约束,如:{id:int:min(1)} 多个路由参数间必须通过文本或分隔符分隔...预定义的路由约束 摘自官方文档 正则表达式路由约束 通过regex(expression)来设置正则表达式约束,并且该正则表达式是: RegexOptions.IgnoreCase:忽略大小写 RegexOptions.Compiled...RegexOptions.CultureInvariant:忽略区域文化差异。...ASP.NET Core默认使用的 matcher 类型是DfaMatcher,DFA(Deterministic Finite Automaton)是一种被称为“确定有限状态自动机”的算法,可以从候选终结点列表中查找到匹配度最高的那个终结点...,如果你想要进行更加深入透彻的了解,推荐阅读蒋金楠老师的ASP.NET Core 3框架揭秘的路由部分。

    1.7K40

    ASp.NET MVC 路由「建议收藏」

    路由 ASP.NET MVC Route—转发请求: 1.客户端发起请求 2.到达IIS 3.转发到程序集 4.经过一个路由匹配–转发到匹配的控制器中 5.匹配的action去处理 RouteConfig...中如果有多个路由,从上到下进行匹配, 按照路由url中的正则表达式进行匹配, 在命中url后找不到Controller或View则使用defaults中的默认参数 public static void...RegisterRoutes(RouteCollection routes) { //忽略路由: XXXX.axd/XXXXX 不去匹配路由...通过aspx后缀进行匹配 //后来MVC出现之后,通过IIS补丁,追加后缀进行识别匹配 //IIS升级,不需要补丁 //于是需要忽略掉带...year=2021&month=12&day=02"作为一个参数 //路由规则是key-value的形式 //如果路由多个,name的值不能相同,

    48920

    ASP.NET Web API路由系统:Web Host下的URL路由

    ASP.NET Web API提供了一个独立于执行环境的抽象化的HTTP请求处理管道,而ASP.NET Web API自身的路由系统也不依赖于ASP.NET路由系统,所以它可以采用不同的寄宿方式运行于不同的应用程序中...如果采用Web Host的方式将定义Web API寄宿于一个Web应用之中,其实最终的URL路由还是通过ASP.NET本身的路由系统完成的,那么两个路由系统之间是如何衔接在一起的呢?。...Web API路由系统在Web Host情况下是如何利用ASP.NET自身的路有系统实现URL路由的:ASP.NET Web API路由系统中的HostedHttpRoute对象通过创建ASP.NET...,但是依然没有回答:调用该对象的扩展方法MapHttpRoute进行路由影射时对应的HostedHttpRoute对象是如何创建并添加的?...Web API在Web Host模式下依然是借助ASP.NET自身的路由系统实现URL路由,那么意味着当我们针对ASP.NET Web API进行路由映射的时候必须在ASP.NET路由系统的全局路由表中添加对一个继承自抽象类

    1.6K100
    领券