首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

ASP.NET MVC 路由选择有关问题,大家各抒己见

2013-09-06 
ASP.NET MVC 路由选择问题,大家各抒己见我重写了IRouteHanlder, IHttpHandler, 但是MyHttpHanlder中的Proc

ASP.NET MVC 路由选择问题,大家各抒己见
我重写了IRouteHanlder, IHttpHandler, 但是MyHttpHanlder中的ProcessRequest方法就是不被触发。

public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
        }

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            //routes.MapRoute(
            //    "DefaultTT", // Route name
            //    "test", // URL with parameters
            //    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            //);

            RouteValueDictionary defaults = new RouteValueDictionary();
            RouteValueDictionary constraints = new RouteValueDictionary();
            RouteValueDictionary tokens = new RouteValueDictionary();

            defaults.Add("controller", "home");
            defaults.Add("action", "index");
            defaults.Add("data", string.Empty);
            constraints.Add("data", @"[a-zA-Z0-9\-]*");
            tokens.Add("pageId", 0);

            routes.Add(new Route("", defaults, constraints, tokens, new MyRouteHandler()));
        }

        protected void Application_Start()


        {
            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
        }

        public class MyRouteHandler : IRouteHandler
        {

            public System.Web.IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestContext)
            {
                return new MyMVCHanlder(requestContext);
            }
        }

        public class MyMVCHanlder : MvcHandler
        {
            public MyMVCHanlder(RequestContext requestContext)
                : base(requestContext)
            {

            }

            protected override void ProcessRequest(HttpContext httpContext)
            {
                int i = 1;
                int j = i + 1;
                base.ProcessRequest(httpContext);
            }


            protected override void ProcessRequest(HttpContextBase httpContext)
            {
                int i = 1;
                int j = i + 1;


                base.ProcessRequest(httpContext);
            }
        }
    }



浏览器中输入http://localhost:3359/, 断点调试,发先调用了MyHttpHandler构造方法,说明new了这样一个实例。可是我重写的ProcessRequest方法,怎么就不被调用呢?大家说说想法,谢谢。

热点排行