知识大全 ASP.NET中URL Rewrite的实现方法

Posted 事件

篇首语:赚钱之道很多,但是找不到赚钱的种子,便成不了事业家。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET中URL Rewrite的实现方法相关的知识,希望对你有一定的参考价值。

ASP.NET中URL Rewrite的实现方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  之前觉得这个话题已经被谈滥了 URL Rewrite早已经被广大开发人员所接受 网上关于URL Rewrite的组件和文章也层出不穷 但是总是让我感觉意犹未尽 于是最终还是忍不住提笔写了这系列文章 这些文章不会谈论URL Rewrite的价值与意义 而只会谈论纯技术的内容 文章中也不会有详尽地实现分析 而是结合了我的经验 从应用角度来讲解这个话题 您已经知道的 您还不知道的 别处已经讲过的 或者还没有讲过的 希望这系列文章的 旧事重提 不会让您觉得沉闷 并且能让您了解ASP NET中URL Rewrite的方方面面 如果您以后再遇到URL Rewrite方面的问题是能够想到这几篇文章 估计我做梦也会笑出声来

  要充分理解文章后面谈到的话题 我们必须简单的了解一下IIS与ASP NET的通信过程 我在这里讲解的是IIS 服务器 至于IIS 和IIS 前者可以说已经被淘汰了 而后者的 经典模式 与IIS 可谓如出一辙 而新的 管道模式 其实是讲ASP NET中的某些概念与IIS进行了深度集成 我相信 如果您了解了IIS 和ASP NET 在IIS 的集成模式下也不会有任何问题

  首先我们来看一幅简单的示意图 展示了IIS从收到Request开始 到返回Response整个过程中的几个主要步骤

   IIS收到请求

   选择器根据URL的特点与IIS中的配置 选择一个ISAPI用于处理该请求——现在自然会选择ASP NET ISAPI

   ASP NET执行引擎接收到请求 于是初始化数据(例如构建各种对象)

   开始触发各种Pipeline事件 自然先从BeginRequest开始

   经过了多个Pipeline事件 ASP NET根据配置为当前请求选择一个合适的Handler或HandlerFactory进行处理(当然特殊情况例外 例如已经在之前的事件中直接输出结果并结束请求了)

   经过了Handler处理之后又经过几个Pipeline事件 以EndRequest结束

   输出Response

  在一个ASP NET应用中如果要进行URL Rewrite 那么一般就是在BeginRequest事件中调用HttpContext的RewritePath方法 将该请求重新 定位 至一个目标URL 例如我们就可以在Global asax中重写Application_BeginRequest方法来实现这一点

  之所以在BeginRequest中进行Rewrite 是因为这个事件是在所有Pipeline事件中最早被触发的 在这时进行了重新 定位 之后 当前HttpContext中的一些属性也就发生了相应的变化(例如HttpContext Request Path) 这样 接下来的Pipeline事件的处理程序逻辑就会受到影响 例如在需要根据目录进行权限判断时 就会使用 定位 后的路径 而不是ASP NET所收到的请求 自然最 显著 的变化就是对Handler的选择 例如上例 我们把请求重新定位至 CustomerList aspx 文件 这样ASP NET引擎就会选择* aspx所对应的System Web UI PageHandlerFactory类对请求进行处理

public class Global : System Web HttpApplication    protected void Application_BeginRequest(object sender EventArgs e)            HttpContext context = HttpContext Current;         if (context Request Path Equals( /Customers             StringComparison InvariantCultureIgnoreCase))                    context RewritePath( ~/CustomerList aspx );           

   最后插句提外话 有两个概念需要区分开来 那就是 ASP NET Pipeline 与 Web Forms 两者都是ASP NET里的重要模型 但是差别还是非常大的

  ◆ASP NET Pipeline 作为每个ASP NET应用所接受到的请求来说 都会经过这个 管道 进行处理 这是一个ASP NET级别的模型

  ◆Web Forms 在ASP NET Pipeline的执行过程中 其中有一个步骤是选择一个合适的Handler(或HandlerFactory)来处理请求 如果是aspx页面 ASP NET就会选择System Web UI PageHandlerFactory类 在这个类中才最终形成了WebForms模型

cha138/Article/program/net/201311/15295

相关参考

知识大全 在ASP.NET中自动给URL加上超级链接

在ASP.NET中自动给URL加上超级链接  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作为一

知识大全 ASP.NET中获取URL重写前的原始地址

ASP.NET中获取URL重写前的原始地址  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在AS

知识大全 在ASP.NET中自动给URL地址加上超链接

在ASP.NET中自动给URL地址加上超链接  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作为

知识大全 ASP.NET中获取URL重写前的原始地址详解

ASP.NET中获取URL重写前的原始地址详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在AS

知识大全 ASP.NET MVC框架中的URL路径选择场景

ASP.NETMVC框架中的URL路径选择场景  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  A

知识大全 URL Rewrite实现jsp网站伪静态

URLRewrite实现jsp网站伪静态  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  tuck

知识大全 asp.net获取URL和IP地址

asp.net获取URL和IP地址  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  获取URL: 

知识大全 ASP.net实现无扩展名的URL重写

ASP.net实现无扩展名的URL重写  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  URL重写

知识大全 Asp.net关于对url编码的转化

Asp.net关于对url编码的转化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天突然遇到

知识大全 在ASP.NET中实现Url Rewriting

在ASP.NET中实现UrlRewriting  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  概