| 网站首页 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛 |
 
| 技术教程首页 | 开发语言 | WEB开发 | .NET技术 | 数据库 | 操作系统 | 网页制作 |
 
 
您现在的位置: 编程中国 >> 技术教程 >> .NET技术 >> ASP.NET >> ASP.NET技术资料 >> 正文
  ►  在ASP.NET中实现Url Rewriting
在ASP.NET中实现Url Rewriting
作者:未知    阅读人次:……    文章来源:msdn    发布时间:2008-3-5    网友评论()条
 

 

  创建必须的目录结构

  当IIS接收到对/2004/03/19.aspx的请求时,他发现文件扩展名.aspx,便将该请求转交给ASP.NET引擎处理,在ASP.NET 引擎中传递时,该地址被重写到/ShowBlogContent.aspx?year=2004&month=3&day=19,最后用户将看到该Blog上2004年3月19日所有的帖子,但是在用户访问/2004/03/时会发生什么呢?除非已经存在一个/2004/01/的目录,否则IIS将返回一个404错误,而且该目录下还必须要有一个默认页面Default.aspx,IIS才能将请求转交给ASP.NET引擎处理。

  通过这种方法你得手动为每一年的Blog创建一个年份的目录并在该年份下放置一个默认文件Default.aspx,而且还得在该年份目录下创建每一月的目录,从01、02、...、12,每一个目录下也要防止一个默认文件Default.aspx。(回想前面的例子,为了将/Products/重写到/ListCategories.aspx也是要建立一个/Products/目录并放置一个默认Default.aspx文件。

  很明显,这样创建目录结构的过程是很痛苦的。解决这种问题的一个办法就是设置IIS将所有接收的请求都转交给ASP.NET引擎来处理,这种方法,甚至连访问这种地址/2004/04/,IIS都如实地将其转交给ASP.NET引擎处理,这种方法造成ASP.NET引擎得处理所有传入的请求,包括css文件,图片文件、Javascript文件以及Flash文件等等。

  关于对所有类型文件的处理的详细讨论已经超出了本书范围。有关在ASP.NET Web应用程序中使用这些技术的例子请访问.Text 这个开源的Blog。.Text 可以通过配置将所有请求都转交给ASP.NET处理。它使用了一个自定义的HttpHandler来处理所有类型的文件类型,这个自定义的HttpHandler可以识别并判断如何处理所有的文件类型。(图像文件、CSS文件等等。)

  结束语

  本文探讨了通过类HttpContext类的RewriteUrl()方法来实现ASP.NET一级的网址重写,正如我们所看到那样,RewriteUrl()方法在修改这个特有的HttpContextRequest的属性时也修改了所请求的文件和路径。实际得到的效果就是在用户访问其特有的网址的时候,他实际却是在服务器端请求另一个与此不同的网址。

  网址重写不但可以在HttpModule中执行,也可以在HttpHandler中运行。本文我们探讨了在一个HttpModule中执行网址重写,也研究了一下网址重写在ASP.NET中的各个不同场所的情况。

  当然,在ASP.NET一级的网址重写中,只有在IIS成功地将请求转交给ASP.NET引擎后才能成功地执行,当用户请求一个扩展名为.aspx的文件时这很自然地发生。然而,如果要让用户输入一个实际并不存在的网址,通过网址重写到另一个存在的aspx页面,你必须为该请求创建相应的目录和默认的Default.aspx页面,除非配置IIS让它把所有的请求都转交给IIS处理,但是这种方式盲目地将所有请求都转交给了ASP.NET引擎。
共6页。

上一页  [1] [2] [3] [4] [5] [6] 

 

 
文章录入:编辑01    责任编辑:编辑01 
  • 上一篇文章:

  • 下一篇文章:

  •  
    相关文章
    原创地带
    24小时热门帖子