`
javahigh1
  • 浏览: 1288446 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

创建自定义路由约束(C#)

阅读更多

这篇教程要演示如何创建自定义路由约束。自定义路由约束能够使路由只有达到某些自定义条件时才会匹配。

在这篇教程里,我们创建一个 Localhost 路由约束。 它只匹配从本地计算机发出的请求。通过Internet发送的远程请求不被匹配。

要实现自定义路由约束就要实现 IRouteConstraint接口。这个接口极其简单,就描述了一个简单方法:

方法返回一个布尔值。返回false的话,被约束的路由不匹配浏览器请求。

Localhost约束见代码 1.

代码1 – LocalhostConstraint.cs

代码1的约束利用了由HttpRequest类暴露的 IsLocal属性。当请求的IP地址是127.0.0.1或者与服务器IP地址一样时,这个属性就返回true。

使用在Global.asax文件中定义的自定义约束。代码2中的 Global.asax 文件使用了 Localhost 约束来防止来自Admin页的任何请求,除非它们是从本地服务器发出的。例如,从远程服务器发送 /Admin/DeleteAll 请求将会失败。

代码2 – Global.asax

Localhost 约束被用在Admin路由的定义上。这个路由不会被远程浏览器请求所匹配。然而,其他定义在Global.asax中的路由有可能匹配相同的请求。重点理解的是,约束只防止特定的一个路由匹配请求而不是Global.asax文件中定义的所有路由。

注意 Default 路由在代码2中已经被注释掉了。如果你包括了 Default 路由,那么 Default 路由会匹配Admin控制器的的请求。在这种情况下,远程用户仍然可以调用Admin控制器的action,即使它们的请求不会匹配Admin路由。

原文地址:http://www.asp.net/learn/mvc/tutorial-25-cs.aspx

分享到:
评论

相关推荐

    webapi-routeconstraintversioning:使用路由约束在 WebAI 中进行版本控制

    1. **创建自定义路由约束**:首先,我们需要创建一个实现了 `IRouteConstraint` 接口的类,该接口有一个 `Match` 方法,用于检查路由段是否符合约束条件。在这个类中,我们可以编写逻辑来验证版本号的有效性,比如...

    详解ASP.NET WEB API 之属性路由

    *** Web API属性路由是一...当标准约束不足以满足特定需求时,开发者可以创建自定义路由约束来实现更加精细的路由匹配。总之,属性路由机制增强了Web API的路由能力,为构建高效且用户友好的API接口提供了坚实的基础。

    ASP.NET MVC:自定义 Route 让你的 Url 更优雅.

    要自定义路由,你需要在`Global.asax.cs`文件的`RegisterRoutes(RouteCollection routes)`方法中添加自定义的路由规则。例如,你可以创建一个显示文章的URL,如下所示: ```csharp routes.MapRoute( ...

    Aspdotnet2_0中自定义过滤器对Response内容进行处理

    ASP.NET中的过滤器分为五种类型:Authorization Filters(授权过滤器)、Action Filters(操作过滤器)、Result Filters(结果过滤器)、Exception Filters(异常过滤器)和Route Constraints(路由约束)。...

    基于C#MVC项目创建的各种数据处理

    8. **路由和URL管理**:MVC中的路由系统允许自定义URL模式,将HTTP请求映射到特定的控制器方法,提供更好的用户体验和SEO优化。 9. **Ajax异步处理**:为了提高用户体验,MVC项目经常使用jQuery或纯JavaScript的...

    ASP.NET 路由实现去除aspx后缀

    ASP.NET 是微软开发的一种用于构建动态网站、Web 应用和服务的框架。在 ASP.NET 中,路由是一项核心功能,它允许我们定义灵活的...在实际开发过程中,可以根据项目需求进一步自定义路由规则,以实现更多功能和灵活性。

    C#面试(笔试)题合集

    5. **多线程**:线程的创建、同步和通信是面试中常见的问题,如Mutex、Semaphore、Monitor、Task、async/await关键字等。 6. **异常处理**:理解try-catch-finally语句,自定义异常,以及何时应该抛出或捕获异常。 ...

    c#开发经验技巧总结演示源码3.rar

    2. **泛型**:C#的泛型允许创建可重用的类型安全的数据结构。文件中的源码可能展示了如何使用泛型类、泛型方法以及约束来提高代码的灵活性和效率。 3. **异常处理**:C#通过try-catch-finally语句块进行异常处理。...

    C#.net面试题100题

    C#.NET面试题100题是一份涵盖了广泛C#编程和.NET框架核心概念的集合,旨在帮助求职者准备IT行业的技术面试。这份资源包含了多种类型的题目,从基础语法到高级特性和设计模式,旨在全面考察候选人的技能和理解。 1. ...

    C#面试机理性技术文档

    4. **异常处理**:了解C#中的try-catch-finally结构,异常类型,以及如何自定义异常。 5. **LINQ(Language Integrated Query)**:学习使用LINQ进行数据查询,理解其与数据库交互的方式,以及使用Lambda表达式和...

    C#、.Net经典面试题目

    - **异常处理**:了解try-catch-finally语句块,以及如何自定义异常。 - **匿名方法与Lambda表达式**:在C#3.0引入,理解它们的语法和用途,以及与委托的关系。 - **LINQ(Language Integrated Query)**:用于...

    StackOverFlowAttributeRouting:使用 ASP.NET MVC 5 属性路由的类似 stackoverflow.com 的属性路由

    此外,我们还可以利用`RouteConstraint`来添加自定义约束,比如限制`tagName`只能包含字母和数字。同时,可以使用`HttpGet`、`HttpPost`等特性来指定HTTP动词,确保请求类型的正确匹配。 通过属性路由,我们可以...

    C#面试题C#面试题C#面试题

    - 了解约束(Constraints)在泛型中的应用,如where关键字的使用。 4. **集合与LINQ**: - 熟悉ArrayList、LinkedList、List、HashSet等集合类型,以及它们之间的性能差异。 - 掌握LINQ(Language Integrated ...

    c#、asp.net 笔试 面试题

    - URL路由:掌握如何自定义应用程序的URL模式。 - 状态管理:包括ViewState、Session、Cookie和Application等。 - 页面间通信:了解母子页面通信、隐藏字段和QueryString等方法。 3. **ASP.NET MVC框架** - ...

    asp.net 2.0 URL 映射 实例

    开发者可以通过在`Global.asax`文件中的`RouteTable.Routes`集合中添加路由来创建自定义的URL模式。 2. **URL模板**: 路由通常包含一个URL模板,这是一个字符串,其中可以包含动态部分(使用大括号`{}`包围)。动态...

    ASP.NET MVC-调试路由

    这可以通过创建一个路由约束或中间件来实现,它可以记录请求的URL、匹配的路由模板以及为什么没有匹配成功。 2. **RouteDebugger**:RouteDebugger是一个第三方工具,由Phil Haack开发,可以直观地显示所有可能的...

Global site tag (gtag.js) - Google Analytics