All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
浅析ASP.NET,2.0的用户密码加密机制_[Asp.Net教程]
GridView的各种用法(1)_[Asp.Net教程]
规范设计数据库应注意的14个技巧_[SQL Server教程]
关于PHP字符集的问题_php资料_编程技术
支持正则表达式的UrlMapping(ASP.NET2.0)_[Asp.Net教程]
PHP实例:PHP上传自动生成缩略图及水印类_[PHP教程]
.NET数据库应用程序中存储过程的应用_.net资料_编程技术
用Suhosin加强PHP脚本语言安全性_php资料_编程技术
PHP和XSS跨站攻击_[PHP教程]
C#教程:C#2.0 新特性 匿名方法
Reading number is top 10 pictures
Beauty shocked Japan Tokyo motor show model
Azusa Yamamoto2
陪睡门马睿菈自曝写真 称首拍大尺度照片1
I also want to live a June 1 children's day, dad
On the verge of extinction of the beach1
我国房地产真相
两张抽象画
人美胸美腿更美4
A man's favorite things16
From China fortress sora aoi5
Download software ranking
JSP+Ajax Web development typical examples
Rio big adventure
双旗镇刀客B
Desire a peach blossom
apache-tomcat-6.0.33
Sora aoi, the maid, students' uniforms
尖东毒玫瑰A
Boxer's Top ten classic battle3
Boxer vs Yellow3
VC++6.0简体中文版
aaa published in(发表于) 2013/12/8 7:48:42 Edit(编辑)
asp.net,URL重写(URLRewriter),之简化版_.net资料_编程技术

asp.net,URL重写(URLRewriter),之简化版_.net资料_编程技术

asp.net URL重写(URLRewriter) 之简化版_.net资料_编程技术-你的首页-uuhomepage.com

在 asp.net 里实现 URL重写(URLRewriter)的一个最简单的方法。


参考了 (作者 Scott Mitchell 翻译:Janssen )的大作,虽然没有完全看明白,但是也照猫画虎地做了一个,颇有“成就”感。写出来分享一下。


原作里讲了很多的原理,这里就不说了(其实我也不懂)。这里就写操作过程吧。目的是实现一个最简单的能实现 URL重写 的程序。


1、需要设置一下IIS里的站点属性。


2、修改web.config的内容。







其中*.zhtml 就是地址栏里面写的网页的扩展名,就是给用户看的,这个可以随意改(但是要符合扩展名的规则!)。当然要和第一步里面的设置相一致才行。


3、写一个类。


using System;
using System.IO;
using System.Web;
using System.Web.UI;


namespace ZDIL.URLRewriter
{
/**////


/// URL重写
///

public class RewriterFactoryHandler : IHttpHandlerFactory
{
/**////
/// GetHandler is executed by the ASP.NET pipeline after the associated HttpModules have run. The job of
/// GetHandler is to return an instance of an HttpHandler that can process the page.
///

/// The HttpContext for this request.
/// The HTTP data transfer method (GET or POST)
/// The RawUrl of the requested resource.
/// The physical path to the requested resource.
/// An instance that implements IHttpHandler; specifically, an HttpHandler instance returned
/// by the PageParser class, which is the same class that the default ASP.NET PageHandlerFactory delegates
/// to.

public virtual IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
{
string sendToUrl = url; //地址栏里面的地址
string filePath = pathTranslated;


string sendToURLString = "/web/index.aspx"; //真正要访问的页面
string queryString = ""; //参数。比如 ?id=123


filePath = context.Server.MapPath(sendToURLString); //物理地址


//这句最重要了。转向了。
context.RewritePath(sendToURLString, String.Empty, queryString);

//这个还没有弄明白 :)
return PageParser.GetCompiledPageInstance(url, filePath, context);
}


public virtual void ReleaseHandler(IHttpHandler handler)
{ //这个也不懂了
}
}
}


这个类呢,要写在一个单独的项目里面,然后编译成 ZDILURLRewriter.DLL文件。(注意文件名,写错了就不能正常运行了)。


4、完成了。


打开IE ,在地址栏里输入 http://.../1.zhtml


浏览者看到是一个静态页的地址,但是实际上访问的却是 /web/index.aspx 这个动态网页。



怎么样简单吧。


当然了,这个是最简单的,简单到了“不能用”的地步了。因为他会把所有的 *.zhtml 的访问都“重写”到 /web/index.aspx 。


至于把什么样的网页重写到哪个网页,这里就不介绍了(这里只讲方法,不讲实现的细节)。


方法很多了,原作是通过正则来匹配的,我是通过 string sendToUrl = url; 来判断的。


其他的就看你们的需要了。






添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.