asp.net路由配置2

來源:互聯網
上載者:User

1:現在Application_start中註冊您寫的路由模式代碼如下:
   void Application_Start(object sender, EventArgs e)
        {
             //註冊所有的您設定的所有的路由規則,以便請求相應路徑時去對應相應的規則,RouteTable類儲存了所有規則的URL的路徑,
            //RouteTable.Routes的是一個集合RouteCollection,儲存了所有的使用者定義的路由規則,寫在Application_Start方法中的原因是將所有的路由規則註冊到程式中
            RegisterRoutes(RouteTable.Routes);

        }

  public static void RegisterRoutes(RouteCollection routes)
        {
            //添加一個路由到程式中
            //new Route("{page}.aspx", new MyRouteHandler())d的解析,"{page}.aspx",第一個參數是請求的路徑,第二個參數是怎麼樣去處理這個請求。
            //在這裡是用MyRouteHandler去處理這個路由請求
          

            //添加另一個路由
            routes.Add("Default",
                new Route("{category}/{action}.aspx",
                          new RouteValueDictionary(
                              new
                                  {
                                      file = "Default",
                                      category = "home",
                                      action = "index"
                                  }), new MyRouteHandler()//這裡定義一個routeHandler,要用這個handler去出來的的請求路徑
                    )
                );
           
        }
2:定義一個RouteHandler來處理上面的請求路徑
  public class MyRouteHandler : IRouteHandler
    {
        #region IRouteHandler 成員
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            //返回一個請求的對象(IHttpHander),即請求的頁面對象,在MyPage中得到當前請求對象資訊,並處理請求路勁。
            return new MyPage(requestContext);
        }
        #endregion

    }
3:定義一個IHttpHandler的實現對象MyPage
   public class MyPage : IHttpHandler
    {

        public RequestContext RequestContext { get; set; }

        public MyPage(RequestContext context)
        {
            this.RequestContext = context;
        }

        #region IHttpHandler 成員

        //處理請求的url方法,也就是去替換請求路徑當中的相應的參數
        public virtual void ProcessRequest(HttpContext context)
        {
           
            context.Server.Execute(string.Format("/{0}.aspx?category={1}&action={2}",
              RequestContext.RouteData.Values.ContainsKey("file")
                ? RequestContext.RouteData.Values["file"].ToString()
                : "default",
              RequestContext.RouteData.Values.ContainsKey("category")
                ? RequestContext.RouteData.Values["category"].ToString()
                : "",
              RequestContext.RouteData.Values.ContainsKey("action")
                ? RequestContext.RouteData.Values["action"].ToString()
                : "")
                );

        }

        public bool IsReusable
        {
            get { return false; }
        }
        #endregion
    }
 
4:並且在Web.config中system.webServer的節點下配置如下
   <modules>
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    </modules>
    <handlers>
      <add name="MyPage" path="*" type="RouteSimple.IHttpHander.MyPage" verb="*"/>
    </handlers>
 
做完以上路由配置,理論上說路由配置已經完成。
訪問路徑/a/b/Defaul.aspx就是訪問Default.aspx?category=a&action=b的路徑,但是我的運行程式時報如下錯誤,望有實現成功的幫忙解決,不勝感激!
錯誤頁面:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.