浅析ASP.NET Routing对请求的不同处理
在这里我们将讲述ASP.NET Routing对请求的不同处理。文章将从处理机制方面开始讲起,然后讲述监听的过程。希望本文能对大家有所帮助。
ASP.NET Routing是一个通用的组件,它不涉及到任何具体的请求处理方式。如果您需要,也可以自己基于它进行开发——如FubuMvc项目就是这么做的。
首先,如果您需要在项目中使用在ASP.NET Routing的功能,则需要在web.config文件中配置一个HttpModule:
public
static
void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("scripts/{*pathInfo}"); routes.IgnoreRoute("images/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
线程安全的),只不过我们平时不太会去这么做而已。值得注意的是,RouteCollections里的RouteBase对象,它们的顺序是非常重要的。
UrlRouteModule会监听ASP.NET Request Pipelines的PostResolveRequestCache事件,在这个事件中UrlRouteModule会将当前的HttpContext作为参数调用RouteTable.Routes集合的GetRouteData方法。在RouteCollection的GetRouteData方法中,又会依次将HttpContext传入每一个RouteBase对象的GetRouteData方法,如果中途某个RouteBase对象返回了一个非null的结果,则这个结果便会直接返回给UrlRouteModule。
如果UrlRouteModule调用RouteTable.Routes.GetRouteData方法得到了null,则“一切都像没有发生过”。如果GetRouteData方法得到了结果——一个RouteData对象,此时RouteData.Values便会包含请求中捕获到的数据。RouteData中另一个重要的成员便是RouteData.RouteHandler属性,它返回一个IRouteHandler对象。IRouteHandler接口中只有一个方法GetHttpHandler,它接受RequestContext作为参数,并返回一个IHttpHandler对象。如ASP.NET MVC框架在利用ASP.NET Routing时,便会使用MvcRouteHandler来返回一个MvcHandler对象。
不过,UrlRouteModule在得到了IRouteHandler对象之后,并不会直接调用其GetHttpHandler方法,而是判断它是不是ASP.NET Routing自带的StopRoutingHandler类型。StopRoutingHandler是个特殊的IRouteH
相关文档:
使用Gridview绑定数据库中的图片
注:此系列记录在我实际开发中遇到的问题和收藏一些技巧文章。
我们都知道,在Gridview中不能直接去绑定数据库中的图片,我们可以利用HttpHandler很容易的完成这个任务,在这里我记录一下这个过程。
1.上传图片存储到数据库中
在数据库中创建一个表,添加一下3个字段:
步骤一:在Web ......
在Asp.Net提供了三种常用的验证方式:Windows方式是和IIS结合起来可以实现基本、摘要、集成 Windows等身份验证;Passport方式是使用Windows Live ID的帐户来进行统一验证的;Forms方式是使用常见的表单来实现验证。
一、普通实现方式
这种方式是最简单的,只 ......
昨天就业部一美女老师在QQ上逮到我,问我是不是做过VBScript,并不由分说把我QQ告诉了一个在外地工作的学生,让她来咨询我,没办法了,硬着头皮找找解决方法。
原来这位软件工程师所在的项目组要做一个“跟微软差不多的远程Web界面连接”,大概项目经理是这么安排的:“他说用Javascript实现的功能没有那么 ......
首先看下XML结构
<?xml version="1.0" encoding="utf-8"?>
<corplist>
<corp>
<linkname>陈先生</linkname>
<corpname>XXXXXXXXX公司</corpname>
<email>xxxxx@126.com</email>
</corp>
<corp>
<linknam ......
TextBox Web 服务器控件为用户提供了一种向 ASP.NET 网页中键入信息(包括文本、数字和日期)的方法。
一、背景
TextBox 服务器控件是让用户输入文本的输入控件。默认情况下,该控件的 TextMode 属性设置为 TextBoxMode.SingleLine,这将显示一个单行文本框。但可以将 TextMod ......