成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析ASP.NET Routing對請求的不同處理

開發 后端
這里我們需要解釋的是ASP.NET Routing對請求的不同處理,希望本文能對大家了解ASP.NET Routing有所幫助。

在這里我們將講述ASP.NET Routing對請求的不同處理。文章將從處理機制方面開始講起,然后講述監聽的過程。希望本文能對大家有所幫助。

ASP.NET Routing是一個通用的組件,它不涉及到任何具體的請求處理方式。如果您需要,也可以自己基于它進行開發——如FubuMvc項目就是這么做的。
首先,如果您需要在項目中使用在ASP.NET Routing的功能,則需要在web.config文件中配置一個HttpModule:

  1.       public static void RegisterRoutes(RouteCollection routes)   
  2.        {   
  3.  
  4. routes.IgnoreRoute("scripts/{*pathInfo}");   
  5. routes.IgnoreRoute("images/{*pathInfo}");   
  6. routes.MapRoute(   
  7. "Default"// Route name   
  8. "{controller}/{action}/{id}"// URL with parameters   
  9. new { controller = "Home", action = "Index", id = "" } // Parameter defaults   
  10. );   
  11. }  

線程安全的),只不過我們平時不太會去這么做而已。值得注意的是,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是個特殊的IRouteHandler對象,它的作用只是告訴UrlRouteModule,雖然某個規則匹配成功了,但是——也還是當什么都沒發生過吧。因此,如果我們想要“跳過”一些形式的請求,往往則需要將“忽略”功能放在其他所有規則之前。如:

  1. public static void RegisterRoutes(RouteCollection routes)  
  2. {  
  3. routes.IgnoreRoute(" p {*pathInfo}?);< {resource}.axd name="UrlRoutingModule"> 

IgnoreRoute是定義在ASP.NET MVC中,基于RouteCollection類型的擴展方法。它會向RouteCollection中添加一個Route對象,而這個Route對象在匹配成功時返回的RouteData對象,其RouteHandler屬性便為一個StopRoutingHandler,于是余下的Routing規則也不會繼續匹配了——這一點和RouteBase對象返回null不同,因為如果返回null,則余下的規則還會依次匹配。如果返回了一個包含StopRoutingHander的RouteData,則剩下的Routing規則全部跳過。

如果UrlRouteModule得到的IRouteHandler對象不是StopRoutingHandler,則便會通過其GetHttpHandler方法獲得那個IHttpHandler對象。這個IHttpHandler對象會被放入HttpContext的Items集合中。至此,Request Pipeline的PostResolveRequestCache事件便結束了。

UrlRouteModule還會監聽PostMapRequest事件,此時Module便會查找HttpContext.Items集合的特定位置中是否包含一個IHttpHandler對象,如果存在,則會將這個對象設為當前HttpContext對象的Handler屬性的值。于是當ASP.NET繼續執行下去時,便會調用這個Handler的ProcessRequest方法來處理請求了。

如果這個IHttpHandler對象是MvcHttpHandler,那么它便會從RouteData中獲取一些數據,構造Controller對象,執行Action等等。如果它是一個DynamicDataHandler,或是WebForm的HttpHandler,那么剩下的便是各自的模型的處理方式了。

因此,ASP.NET Routing是一個通用的組件,它不涉及到任何具體的請求處理方式。如果您需要,也可以自己基于它進行開發——如FubuMvc項目就是這么做的。

【編輯推薦】

  1. ASP.NET MVC單元測試:HttpContext類的Path屬性解惑
  2. 自定義的ControllerFactory:接口實現,支持Area
  3. ASP.NET Routing之“解析URL”功能詳解
  4. 為ASP.NET MVC應用添加自定義路由
  5. 學習ASP.NET MVC路由的使用方法
責任編輯:彭凡 來源: IT專家網
相關推薦

2009-08-19 09:23:40

ASP.NET Rou

2009-07-21 15:11:14

ASP.NET Rou

2009-02-06 14:11:36

ASP.NET.NET全局異常處理

2009-06-24 09:12:26

ASP.NET頁面請求

2009-07-27 15:34:11

MembershipASP.NET

2009-08-05 18:36:12

ASP.NET Che

2009-07-24 13:41:15

ASP.NET AJA

2009-07-27 10:18:12

TypeResolveASP.NET

2009-07-22 18:03:00

ASP.NET ASP

2009-07-31 12:43:59

ASP.NET MVC

2009-08-05 15:50:13

ASP.NET優點

2011-04-13 14:57:11

ASP.NET請求處理

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設計

2009-07-29 14:12:45

ASP.NET tra

2009-07-29 09:34:54

IsPostBack屬ASP.NET

2009-08-04 17:16:16

ASP.NET代碼優化

2009-08-05 16:17:29

ASP.NET For

2009-08-05 16:50:09

ASP.NET For

2009-07-24 18:02:46

ASP.NET編程

2009-08-05 16:53:14

ASP.NET組件設計
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜精品久久久久久久久久久久久 | 嫩草视频网站 | 国产成年人视频 | 久久这里只有精品首页 | 久久久久无码国产精品一区 | 日本超碰 | 操久久久| 日韩免费网站 | 91久久精品一区二区二区 | 国产欧美一区二区三区日本久久久 | 国产精品久久久亚洲 | 91视频久久 | 日韩久久久久久 | 人人cao | 日韩理论电影在线观看 | 羞羞视频免费在线 | 毛片软件 | 亚洲三区在线观看 | 天天干天天爱天天 | 成人精品国产免费网站 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 一级毛片视频 | 日韩小视频在线 | 女人av| 少妇一级淫片aaaaaaaaa | 久久精品国产久精国产 | 精品一二三区在线观看 | 免费特黄视频 | 国产三级 | 超碰美女在线 | av在线天堂| 免费网站国产 | 91看片网 | 欧美高清性xxxxhd | 中文字幕视频免费 | 日韩av高清在线 | 日本a v在线播放 | 亚洲欧美日韩精品久久亚洲区 | 毛片黄片 | 免费黄色录像片 | 成人精品免费视频 |