科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件在ASP.NET中实现Url Rewriting(九)

在ASP.NET中实现Url Rewriting(九)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

注意:要使用网址重写引擎,强烈推荐在<LookFor>节中使用正则表达式。   创建必须的目录结构

作者:中国IT实验室 来源:中国IT实验室 2007年8月31日

关键字: Rewriting URL ASP.NET

  • 评论
  • 分享微博
  • 分享邮件
按此在新窗口浏览图片
图七. 显示2003年所有的帖子

  注意:要使用网址重写引擎,强烈推荐在<LookFor>节中使用正则表达式。

  创建必须的目录结构

  当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引擎。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    闂傚倷绶¢崣搴ㄥ窗閺囩偐鏋庨柕蹇嬪灪婵ジ鏌曡箛瀣偓鏍綖閿燂拷

    濠电姷顣介埀顒€鍟块埀顒€缍婇幃妯诲緞閹邦剛鐣洪梺闈浥堥弲婊勬叏濠婂牊鍋ㄦい鏍ㄧ〒閹藉啴鏌熼悜鈺傛珚鐎规洘宀稿畷鍫曞煛閸屾粍娈搁梻浣筋嚃閸ㄤ即宕㈤弽顐ュС闁挎稑瀚崰鍡樸亜閵堝懎濮┑鈽嗗亝濠㈡ê螞濡ゅ懏鍋傛繛鍡樻尭鐎氬鏌嶈閸撶喎顕i渚婄矗濞撴埃鍋撻柣娑欐崌閺屾稑鈹戦崨顕呮▊缂備焦顨呴惌鍌炵嵁鎼淬劌鐒垫い鎺戝鐎氬銇勯弽銊ф噥缂佽妫濋弻鐔碱敇瑜嶉悘鑼磼鏉堛劎绠為柡灞芥喘閺佹劙宕熼鐘虫緰闂佽崵濮抽梽宥夊垂閽樺)锝夊礋椤栨稑娈滈梺纭呮硾椤洟鍩€椤掆偓閿曪妇妲愰弮鍫濈闁绘劕寮Δ鍛厸闁割偒鍋勯悘锕傛煕鐎n偆澧紒鍌涘笧閹瑰嫰鎼圭憴鍕靛晥闂備礁鎼€氱兘宕归柆宥呯;鐎广儱顦伴崕宥夋煕閺囥劌澧ù鐘趁湁闁挎繂妫楅埢鏇㈡煃瑜滈崜姘跺蓟閵娧勵偨闁绘劕顕埢鏇㈡倵閿濆倹娅囨い蹇涗憾閺屾洟宕遍鐔奉伓

    重磅专题
    往期文章
    最新文章