浅析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
相关文档:
PlaceHolder 控件使您可以将空容器控件放置到页上,然后在运行时动态地将子元素添加到该容器中。
一、背景
PlaceHolder Web 服务器控件使您可以将空容器控件放置到页内,然后在运行时动态添加、删除或依次通过子元素。该控件只呈现其子元素;它不呈现自身的任何标记。
例如, ......
protected override void Render(HtmlTextWriter writer)
{
StringWriter sw = new StringWriter();
HtmlTextWriter htm ......
RadioButton 控件和 RadioButtonList 控件使用户能够从一小组互相排斥的预定义选项中进行选择。
一、功能
可以使用 CheckBox 控件和 CheckBoxList 控件执行以下操作:
·当选中某个单选按钮时引起页回发。
·当用户选中某个单选按钮时捕获用户交互。
&middo ......
标签:xml .net [推送到技术圈]
loveqq2004
<?xml version="1.0" encoding="utf-8" ?>
<files>
<file>
<name>4.dll</name>
&nb ......
VS2005调试asp.net端口号出错问题的解决方案
在Windows Server 2003用vs2005 sp1调试Asp.net程序的时候,突然页面不能显示出来,老是显示“网页无法显示”的页面,无奈用firefox调试了一段时间。
然后今天用ie调试的时候发现:IE地址栏里面显示端口号和桌面任务栏右下角“ASP.NET Deve ......