Asp.net中的路由
做为web开发人员,你肯听说过url重写,Routing,也行你也会用这些技术,但在这些技术的背后,你知道他们是怎么运行的吗?一直很苦闷,心里有点不踏实,看了URL重写,实现了效果,但根本不知道发生了什么,还有MVC中的Router,心里总是没底,所有我想有必要把这些知识做一个总结,权当作是一个学习笔记吧!本人文笔有限,也不知道从什么地方开始写,姑且从IHttpHandler开始吧!
我们首先开始新建一个网站,命名为URL,然后添加一段代码,之后结构如下:
现在我们开始运行我们的程序,在地址栏输入:http://localhost:2459/URL/httpHandlerexample.aspx
出现效果如下:
你也许会奇怪了,我们并没有新建一个httpHandlerexample.aspx的文件,文件中只有一个HttpHandlerExample的类?为什么会出现这种现象呢?这就是今天我们要讨论的IHttpHandler接口的作用了,IHttpHandler接口的定义如下:
http处理程序只不过是实现了IHttpHandler接口的类
IsReusable属性返回一个bool值,这个值用来指示其他请求是否可以使用 IHttpHandler 实例。
ProcessRequest方法用来处理http请求。下面我们就来分析一下HttpHandlerExample.cs的代码,看究竟发生了什么。代码如下:
public class HttpHandlerExample:IHttpHandler
{
public HttpHandlerExample()
{
}
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext httpContext)
{
httpContext.Response.Write("Hello world!");
}
}
HttpHandlerExample类实现了IHttpHandler接口,用来处理一个http请求,但这个程序并没有入口,我们怎么调用他,这就要用到了web.config中的配置文件了,他会指示将特定的文件映射到web服务器资源。
在system.web下httpHandlers节点中添加如下内容:
现在你可以会明白了,原理是把httpHandlerexample.aspx文件映射到了HttpHandlerexample类中了。