亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

WebForms使用System.Web.Routing

2019-11-17 03:55:55
字體:
來源:轉載
供稿:網友
老趙同學寫過 在Web應用程序開發過程中利用asp.net MVC框架的實戰技巧 ,Routing現在可以作為URLRewriting技術的替代者,出現在asp.net mvc框架中,將它應用于WebForms上也是很簡單的,可以到codeplex上下載ASP.NET MVC WebFormRouting Demo 。

實現的原理也是很簡單的:

1、創建一個自定義的實例化你的頁面的 IRouteHandler   

     1: public class WebFormRouteHandler : IRouteHandler {

   2:  
        public
WebFormRouteHandler(string
virtualPath)   3:  
            : this
(virtualPath, true
) {   4:  
        }   5:  
    6:  
        public
WebFormRouteHandler(string
virtualPath, bool
checkPhysicalUrlaccess) {   7:  
            if
(virtualPath == null
) {   8:  
                throw
new
ArgumentNullException("virtualPath"
);   9:  
            }  10:  
   11:  
            if
(!virtualPath.StartsWith("~/"
)) {  12:  
                throw
new
ArgumentException("virtualPath must start with a tilde slash: /"~//""
, "virtualPath"
);  13:  
            }  14:  
   15:  
            this
.VirtualPath = virtualPath;  16:  
            this
.CheckPhysicalUrlAccess = checkPhysicalUrlAccess;  17:  
        }  18:  
   19:  
        /// <summary>
  20:  
        /// This is the full virtual path (using tilde syntax) to the WebForm page.
  21:  
        /// </summary>
  22:  
        /// <remarks>
  23:  
        /// Needs to be thread safe so this is only settable via ctor.
  24:  
        /// </remarks>
  25:  
        public
string
VirtualPath { get; PRivate
set; }  26:  
   27:  
        /// <summary>
  28:  
        /// Because we're not actually rewriting the URL, ASP.NET's URL Auth will apply
  29:  
        /// to the incoming request URL and not the URL of the physical WebForm page.
  30:  
        /// Setting this to true (default) will apply URL access rules against the
  31:  
        /// physical file.
  32:  
        /// </summary>
  33:  
        /// <value>True by default</value>
  34:  
        public
bool
CheckPhysicalUrlAccess { get; set; }  35:  
   36:  
        public
IHttpHandler GetHttpHandler(RequestContext requestContext) {  37:  
            string
virtualPath = GetSubstitutedVirtualPath(requestContext);  38:  
            if
(this
.CheckPhysicalUrlAccess && !UrlAuthorizationModule.CheckUrlAccessForPrincipal(virtualPath, requestContext.HttpContext.User, requestContext.HttpContext.Request.HttpMethod))  39:  
                throw
new
SecurityException();  40:  
   41:  
            var page = BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof
(Page)) as
IHttpHandler;  42:  
            if
(page != null
) {  43:  
                //Pages that don't implement IRoutablePage won't have the RequestContext
  44:  
                //available to them. Can't generate outgoing routing URLs without that context.
  45:  
                var routablePage = page as
IRoutablePage;  46:  
                if
(routablePage != null
)  47:  
                    routablePage.RequestContext = requestContext;  48:  
            }  49:  
            return
page;  50:  
        }  51:  
   52:  
        /// <summary>
  53:  
        /// Gets the virtual path to the resource after applying substitutions based on route data.
  54:  
        /// </summary>
  55:  
        /// <param name="requestContext"></param>
  56:  
        /// <returns></returns>
  57:  
        public
string
GetSubstitutedVirtualPath(RequestContext requestContext) {  58:  
            if
(!VirtualPath.Contains("{"
))  59:  
                return
VirtualPath;  60:  
   61:  
            //Trim off ~/
  62:  
            string
virtualPath = VirtualPath.Substring(2);  63:  
   64:  
            Route route = new
Route(virtualPath, this
);  65:  
            VirtualPathData vpd = route.GetVirtualPath(requestContext, requestContext.RouteData.Values);  66:  
            if
(vpd == null
)  67:  
                return
VirtualPath;  68:  
            return
"~/"
+ vpd.VirtualPath;  69:  
        }  70:  
    }2、使用自定義的 IRouteHandler注冊一個新的Routes

   1:  
public
class
Global : System.Web.Httpapplication   2:  
    {   3:  
    4:  
        protected
void
Application_Start(object
sender, EventArgs e)   5:  
        {   6:  
            RegisterRoutes(RouteTable.Routes);   7:  
        }   8:  
    9:  
        public
static
void
RegisterRoutes(RouteCollection routes)  10:  
        {  11:  
            //We are intentionally creating this backdoor as a demonstration of
  12:  
            //bad security practices.
  13:  
            routes.MapWebFormRoute("Secret"
, "BackDoor"
, "~/Admin/SecretPage.aspx"
, false
);  14:  
            routes.MapWebFormRoute("Blocked"
, "FrontDoor"
, "~/Admin/SecretPage.aspx"
, true
);  15:  
   16:  
            //Even though we are not checking physical url access in this route, it should still block because the incoming
  17:  
            //request url would start with /Admin.
  18:  
            routes.MapWebFormRoute("Admin"
, "Admin/{*anything}"
, "~/Admin/SecretPage.aspx"
, false
);  19:  
   20:  
            routes.MapWebFormRoute("Named"
, "foo/bar"
, "~/forms/blech.aspx"
);  21:  
            routes.MapWebFormRoute("Numbers"
, "one/two/three"
, "~/forms/haha.aspx"
);  22:  
              23:  
            //Maps any requests for /haha/*.aspx to /forms/hahah.aspx
  24:  
            routes.MapWebFormRoute("Substitution"
, "haha/{filename}"
, "~/forms/haha.aspx"
);  25:  
        }  26:  
    }相關文章:

<span id="ctl00_ArticleTopHeader_ArticleTitle" class="ArticleTopTitle">Fight 404 errors with ASP.NET Routing :<a href="http://www.codeproject.com/KB/aspnet/routing404.aspx">http://www.codeproject.com/KB/aspnet/routing404.aspx</a></span>

msdn雜志文章:
使用 ASP.NET Web 窗體路由:http://msdn.microsoft.com/zh-cn/magazine/2009.01.extremeaspnet.aspx


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/dz45693/archive/2009/12/22/5058018.aspx
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩激情第一页| 成人xvideos免费视频| 日韩国产激情在线| 欧洲s码亚洲m码精品一区| 久久久久成人网| 人人做人人澡人人爽欧美| 欧美视频第一页| 色妞色视频一区二区三区四区| 欧美激情免费视频| 国产精品视频中文字幕91| 亚洲成人三级在线| 少妇av一区二区三区| 丝袜亚洲另类欧美重口| 91精品啪aⅴ在线观看国产| 成人网址在线观看| 欧美xxxx做受欧美| 成人在线视频网站| 精品国产乱码久久久久酒店| 青青久久av北条麻妃黑人| 日韩免费视频在线观看| 国产成人精品久久亚洲高清不卡| 国产精品18久久久久久麻辣| 成人网页在线免费观看| 性欧美在线看片a免费观看| 亚洲第一精品自拍| 2019中文字幕在线| 亚洲老头同性xxxxx| 国产精品欧美久久久| 性欧美xxxx视频在线观看| 日韩激情第一页| 色综合天天狠天天透天天伊人| 日日骚av一区| 一区二区三区无码高清视频| 久久亚洲精品小早川怜子66| 欧美日韩ab片| 91免费高清视频| 亚洲日韩中文字幕在线播放| 米奇精品一区二区三区在线观看| 国产亚洲欧美日韩一区二区| 91免费高清视频| 亚洲网址你懂得| 日韩成人激情在线| 久久精品视频在线观看| 国产综合久久久久久| 91wwwcom在线观看| 久久精品91久久久久久再现| 欧美乱大交做爰xxxⅹ性3| 中文日韩在线视频| 国产日韩欧美日韩| 亚洲精品久久久久久久久久久| 精品色蜜蜜精品视频在线观看| 亚洲影院污污.| 国产成人精品午夜| 日韩av免费看网站| 久久精品视频在线播放| 欧美在线一级va免费观看| 国产美女久久精品香蕉69| 亚洲国产毛片完整版| 欧美在线性视频| 久久精品一本久久99精品| 2020国产精品视频| 在线观看精品自拍私拍| 亚洲精品之草原avav久久| 国产剧情久久久久久| 91精品国产综合久久久久久久久| 日韩在线激情视频| 欧美在线xxx| 欧美激情在线狂野欧美精品| 综合国产在线观看| 欧美另类第一页| 久久久久久国产精品久久| 日韩精品亚洲元码| 91精品国产91久久久久久吃药| 亚洲免费伊人电影在线观看av| 欧美国产精品va在线观看| 性色av香蕉一区二区| 成人欧美一区二区三区黑人| 中文字幕亚洲欧美日韩2019| 欧美自拍大量在线观看| 成人福利视频在线观看| 欧美怡红院视频一区二区三区| 久久久久久久97| 国产精品影院在线观看| 精品一区二区三区电影| 亚洲视频在线免费看| 亚洲欧洲在线免费| 国产精品视频在线播放| 欧美自拍大量在线观看| 国产aaa精品| 永久555www成人免费| 98午夜经典影视| 欧美大学生性色视频| 国产成人精品免高潮在线观看| www.日本久久久久com.| 亚洲精品电影网站| 精品国产视频在线| 亚洲国产精品一区二区久| 国产精品综合久久久| 国产精品第三页| 正在播放欧美一区| 久久精品99无色码中文字幕| 97国产一区二区精品久久呦| 一本一本久久a久久精品综合小说| 欧美激情综合色综合啪啪五月| 久久国产天堂福利天堂| 久久综合网hezyo| 成人两性免费视频| 亚洲奶大毛多的老太婆| 不卡av电影在线观看| 日韩成人在线视频| 日韩精品在线观看视频| 欧美片一区二区三区| 国产精品99免视看9| 亚洲国产天堂久久综合网| 亚洲久久久久久久久久久| 久久久久久久成人| 国产精品国产三级国产专播精品人| 伊人一区二区三区久久精品| 日韩精品极品在线观看| 精品久久香蕉国产线看观看亚洲| 日韩精品福利网站| 国产精品第一页在线| 国产mv免费观看入口亚洲| 成人免费淫片视频软件| 亚洲风情亚aⅴ在线发布| 色偷偷91综合久久噜噜| 亚洲香蕉伊综合在人在线视看| 欧美夫妻性视频| 久久在线视频在线| 欧美日韩国产精品专区| 欧美激情区在线播放| 亚洲精品国精品久久99热一| 91色在线视频| 久久视频精品在线| 性欧美xxxx视频在线观看| 国产成人啪精品视频免费网| 亚洲va欧美va在线观看| 久久久久五月天| 亚洲美女精品久久| 伊人青青综合网站| 亚洲老头同性xxxxx| 欧美肥老太性生活视频| 日本精品视频网站| 日韩美女毛茸茸| 国产精品久久久久影院日本| 欧美小视频在线| 欧美日韩国产在线播放| 福利二区91精品bt7086| 欧美日韩综合视频网址| 日韩av在线一区| 日韩乱码在线视频| 91av网站在线播放| 国产精品视频久久久久| 日韩有码视频在线| 日韩成人高清在线| 日韩中文字幕av| 夜夜狂射影院欧美极品| 亚洲第一精品久久忘忧草社区| 日韩av在线高清| 久久免费国产视频| 欧日韩不卡在线视频| 精品女厕一区二区三区| 欧美在线视频一区二区| 国产精品亚洲视频在线观看|